C# Can';在数组中找不到某些值

C# Can';在数组中找不到某些值,c#,arrays,C#,Arrays,我有一个字符串数组,每个字符串都是以“的形式构建的。如果y从'n'开始,我的程序似乎无法找到它 所以,不起作用的字符串是 "w north", "w n", "walk n", "walk north" 你能解释一下原因吗 string[] next = { "next", "ne", "nx", "nxt" }; string[] yes = { "yes", "y" }; string[] no = { "no", "n" }; string[] clear = { "clear", "c

我有一个字符串数组,每个字符串都是以
的形式构建的。如果
y
'n'
开始,我的程序似乎无法找到它

所以,不起作用的字符串是

"w north",
"w n",
"walk n",
"walk north"
你能解释一下原因吗

string[] next = { "next", "ne", "nx", "nxt" };
string[] yes = { "yes", "y" };
string[] no = { "no", "n" };
string[] clear = { "clear", "c" };
string[] help = { "help", "h" };
string[] walk = 
        { 
            "w north", 
            "w south",
            "w west",
            "w east",
            "w n",
            "w s",
            "w w",
            "w e",
            "walk north",
            "walk south",
            "walk west",
            "walk east" ,
            "walk n",
            "walk s",
            "walk w",
            "walk e"
        };

//Checks if any input match the arrays
public string Input(string input)
{
    input = input.ToLower();
    if (next.Any(input.Contains))
    {
        return "next";
    }
    else if (yes.Any(input.Contains))
    {
        return "yes";
    }
    else if (no.Any(input.Contains))
    {
        return "no";
    }
    else if (clear.Any(input.Contains))
    {
        return "clear";
    }
    else if (help.Any(input.Contains))
    {
        return "help";
    }
    else if (walk.Any(input.Contains))
    {
        MessageBox.Show("test input");
        Location C_locations = new Location();
        C_locations.Change_location(input);
        return "walk";
    }
    else
    {
        return "not found";
    }
}
字符串:
“w north”
“w n”
“walk n”
“walk north”
,应该运行这部分代码:

else if (walk.Any(input.Contains))
{
    MessageBox.Show( "test input" );
    Location C_locations = new Location();
    C_locations.Change_location( input );
    return "walk";
}

代码不起作用的原因在于
no
数组的内容:它包含一个字母字符串
“n”
。正是这根细绳构成了

no.Any( input.Contains )
对于包含字母
'n'
的任何输入字符串,计算为
True


为了解决此问题,您可以将
walk
的检查移动到
的顶部,如果
/
/
否则
链。但是,解决方案不会过于健壮:
“黄色”
将被分类为
“是”
“猫”
将变为
“清晰”
,等等。

代码不工作的原因在于
no
数组的内容:它包含一个字母字符串
“n”
。正是这根细绳构成了

no.Any( input.Contains )
对于包含字母
'n'
的任何输入字符串,计算为
True


为了解决此问题,您可以将
walk
的检查移动到
的顶部,如果
/
/
否则
链。但是,解决方案不会过于稳健:
“黄色”
将被归类为
“是”
“猫”
将变成
“清晰”
,等等。

如果您在提交之前完全充实您的问题,这将有助于获得正确答案并防止任何关闭。如果您在提交之前充分充实您的问题,这将有助于获得正确答案并防止任何关闭。