我正在制作文字游戏,我有一种方法可以从播放器获取输入,另一种方法可以处理输入。但是,它仅在播放器以小写形式输入命令时才有效。我希望它忽略大小写。
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.)。想法?
答案 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)
这将针对两个大写字符串进行验证。