C#计算如果一个单词中有一个imputfield字母

时间:2012-05-04 07:23:19

标签: c# substring indexof

如果来自输入框的值是在字符串中的动词中,我如何计算?

如果可能的话,在动词中给出正确的字母位置(如刽子手) 此外,如果动词不包含字母,请将该字母放在列表中。

带有NAME一词的示例:

  1. 输入字母E
  2. 字母在单词-last position(4th)
  3. 示例帮助

    1. 输入字母V字母不在单词内添加字母到a 列表(错误字母列表)
    2. 感谢您的帮助;)

2 个答案:

答案 0 :(得分:0)

您可以使用string.IndexOf:

string hangmanWord = "Democracy";
int index = hangmanWord.IndexOf("m"); // 2 (at position 2)
int index = hangmanWord.IndexOf("x"); // -1 (not found)

答案 1 :(得分:0)

正则表达式会是更好的选择吗?你得到一个字母的所有出现以及字母中根本没有出现的字母(测试是在控制台应用程序中 - 确保使用System.Text.RegularExpressions命名空间): 编辑:包括Hangman类和一个简单的控制台调用:

public class Hangman
{

    public List<string> InvalidLetters { get; private set; }

    private string input;

    public Hangman(string input)
    {
        InvalidLetters = new List<string>();
        this.input = input;
    }

    public void CheckLetter(string letter)
    {
        if (!Regex.IsMatch(input, letter, RegexOptions.IgnoreCase))
        {
            InvalidLetters.Add(letter);
            Console.WriteLine("Letter " + letter + " does not appear in the string.");
        }
        else
        {
            MatchCollection coll = Regex.Matches(input, letter, RegexOptions.IgnoreCase);
            Console.WriteLine("Letter " + letter + " appears in the following locations:");
            foreach (Match m in coll)
            {
                Console.WriteLine(m.Index);
            }
        }
    }
}

和主程序:

class Program
{
    static void Main(string[] args)
    {
        string input = "Stack Overflow";
        if (!string.IsNullOrEmpty(input))
        {
            Hangman h = new Hangman(input);
            string letter = Console.ReadLine();
            while (!string.IsNullOrEmpty(letter))
            {
                h.CheckLetter(letter);
                letter = Console.ReadLine();

            }
        }
    }
}