如何检查字母及其在字符串中的位置?



我正在用c#制作一个绞刑游戏。

我正在使用这个代码来检查单词中的字母:

string s = "Hello World";
foreach(char o in s)
{
Debug.Log(o);
}

我需要检查所有的字母,并检查是否有玩家输入的字母,就像我的例子o

然后我需要用我检查过的字母替换星号*所代表的未知字母。

我必须记录字母的位置,以便以后替换它们。

有什么方法可以跟踪字母的位置吗?

c#中的字符串是不可变的。因此,您必须创建一个包含新猜测字母的新字符串。如果你是一个编程新手:把你的代码划分成执行特定任务的函数。

一个可能的解决方案如下:

using System;

public class Program
{
public static void Main()
{
string answer = "Hello";
// The length of the string with stars has to be the same as the answer.
string newWord = ReplaceLetter('e', "*****", answer);
Console.WriteLine(newWord);                             // *e***
newWord = ReplaceLetter('x', newWord, answer);
Console.WriteLine(newWord);                             // *e***
newWord = ReplaceLetter('H', newWord, answer);
Console.WriteLine(newWord);                             // He***    
newWord = ReplaceLetter('l', newWord, answer);
Console.WriteLine(newWord);                             // Hell*                
}

public static string ReplaceLetter(char letter, string word, string answer)
{
// Avoid hardcoded literals multiple times in your logic, it's better to define a constant.
const char unknownChar = '*';
string result = "";
for(int i = 0; i < word.Length; i++)
{
// Already solved?
if (word[i] != unknownChar) { result = result + word[i]; }
// Player guessed right.
else if (answer[i] == letter) { result = result + answer[i]; }
else result = result + unknownChar;
}
return result;
}
}

使用for循环:

for (int i = 0; i < s.Length; i++)
{
char o = s[i];
Debug.Log(o);
}

String具有一个索引器,可用于获取给定索引处的字符。

通过使用for循环,您可以访问每次迭代的索引i

相关内容

  • 没有找到相关文章

最新更新