关于console:Case Insensitive Interpretation C#

Case Insensitive Interpretation C#

本问题已经有最佳答案,请猛点这里访问。

我正在做一个文本游戏,我有一种方法从玩家那里获取输入,另一种方法处理输入。但是,它只在播放器以小写形式键入命令时才起作用。我要它忽略这个案子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
        public string GetInput()
    {
        var Test = true;

        while (Test)
        {
            response = Console.ReadLine();
            if (validWords.Contains(response))
            {
                Test = false;
                ProcessInput(response);
            }
            else
            {
                Console.WriteLine("I'm sorry, I do not understand.");
            }
        }
        return response;
    }
public void ProcessInput(string response)
    {
        switch (response)
        { //Switch statements for responses here
        }
    }

我试过使用我在这里找到的其他一些响应,但它们都只适用于小写输入(使用linq、string.indexof/equals/etc)。思想?


使用指定的比较器,忽视案例作为字符串参数Contains方法二:

1
validWords.Contains(response, StringComparer.OrdinalIgnoreCase)


你可以添加在.ToLower()Readline,随后为:

response = Console.ReadLine().ToLower();

一切都在读从控制台将在lowercase。

你可以阅读更多关于《ToLowerMSDN文档的方法。

furthermore,也看到下面的问题,如果你期望输入某些文化:string.tolower string.tolowerinvariant()和()。


你可以让你的每一个接收输入,低的情况下,以实现()。

实例:

1
string response = Console.ReadLine().ToLower();

改变文本"你必须使用.tolower(下)。


你是目前使用的两个if (validWords.Contains(response))支票是否响应用户的validwords冰包含在你的战略。(我assuming)。 你可以做下面的冰使用LINQ表达式:

1
if (validWords.Where(w => w.ToUpper().Equals(response.ToUpper())).Count() == 1)

这两个案例validates在绳索上。