比较用户输入

时间:2014-09-07 09:47:05

标签: c# char compare

我想在c#中编写简单的应用程序,帮助我学习触摸打字。现在我正在制作比较文本和用户输入的字符的方法。我有问题,因为我做了一些方法来寻找文本更改:

private void tb_write_TextChanged(object sender, TextChangedEventArgs e)
    {
        TextBox t =(TextBox)sender;

        if (Words.WordCompare(tb_text.Text.ToCharArray(), t.Text.ToCharArray()))
        {

            l_words.Content =("OK");


        }
        else
        {
            l_words.Content = ("Not ok");
        }

    }

然后我有我的WordCompare方法:

class Words
{
  public static bool WordCompare(char[] input, char[] output)
    {
        List<char> used = new List<char>();

        foreach(char ch_out in output)
        {
            foreach (char ch_in in input)
            {
                if (ch_out == ch_in)
                {
                    used.Add(ch_in);
                    return true;
                }
            }
        }
        return false;
    }

主要问题是,如果用户输入正常(我的意思是用户正确地写每个字符)方法工作正常,但它只检查第一个字符,无论我写什么然后总是返回true。此外,当来自文本和用户输入的任何字母相同时,它返回true,而不是它的位置。我想添加&#34;使用&#34;要列出的字符以跟踪它们,但每次调用方法时都会生成新列表。你能帮我解决这个问题吗,或者还有另外一种解决方法吗?

1 个答案:

答案 0 :(得分:0)

class Words
{
  public static bool WordCompare(char[] input, char[] output)
    {
        List<char> used = new List<char>();
        bool flag = true;

        if(input.Length!=output.Length) {return false;}

        for(int i=0;i<input.Length;++i)
        {
                if (input[i]==output[i])
                {
                    used.Add(ch_in);
                }
               else
                {
                     flag = false;
                     break;
                }
        }
        return flag;
    }

除了我想说的是:你不需要在输入每个字符时进行比较,而只是通过让客户点击另一个新按钮来比较整个字符串,在哪个按钮中事件点击只需使用你的foreach进行比较。