案例不敏感解释C#

时间:2017-03-21 12:49:51

标签: c# console string-comparison

我正在制作文字游戏,我有一种方法可以从播放器获取输入,另一种方法可以处理输入。但是,它仅在播放器以小写形式输入命令时才有效。我希望它忽略大小写。

        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.)。想法?

5 个答案:

答案 0 :(得分:3)

使用忽略字符串大小写的string comparer作为Contains方法的第二个参数:

validWords.Contains(response, StringComparer.OrdinalIgnoreCase)

答案 1 :(得分:2)

您可以在readline之后添加.ToLower(),如下所示:

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

从控制台读入的所有内容都是小写的。

您可以在MSDN documentation中了解有关ToLower方法的更多信息。

此外,如果您希望输入某些文化,请参阅以下问题:string.ToLower() and string.ToLowerInvariant()

答案 2 :(得分:1)

使用.ToLower()更改您需要降低的文本。

答案 3 :(得分:1)

您可以使用ToLower()来完成收到的每个输入,小写。

示例:

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

答案 4 :(得分:-1)

您目前正在使用if (validWords.Contains(response))来检查用户的回复是否包含在您的有效词汇列表中。 (我假设)。

您可以使用以下LINQ表达式:

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

这将针对两个大写字符串进行验证。