因此,在我学习C#的过程中,我试图创建一个交互式的故事,它会根据用户提交的一些输入进行更改。在这种情况下,如果用户输入"Bobby“,讲述者就会开始像Hank Hill那样说话。然而,根据它的编程方式,输入是区分大小写的。
我已经尝试了我看到的一个建议,即将if语句格式化为:
if (boyName.ToUpper() == "Bobby")
但这不会触发具有不同字母大小写的if命令
Console.WriteLine($"{beginning} \n What was the boy's name?");
boyName = Console.ReadLine();
if (boyName == "Bobby")
{
Console.WriteLine("That boy ain\'t right, I tell ya what... ");
Console.ReadKey();
Console.WriteLine($"{boyName} boy dang climbed a big ol' tree...");
Console.ReadKey();
}
else
{
Console.WriteLine($"The kid named {boyName} climbed a tree...");
Console.ReadKey();
}
我希望有一行代码,无论情况如何,都会触发if条件。然而,我所尝试的一切并没有改变这一点。它需要明确为"Bobby“,否则将触发else条件。
发布于 2019-04-19 01:28:18
你应该试试
if (boyName.ToUpper() == "Bobby".ToUpper())
发布于 2019-04-19 02:51:33
在技术上,最好使用不区分大小写的比较,而不是更改要比较的字符串的大小写,因为对于所有语言(字母表),ToUpper()
并不总是像预期的那样工作(从比较的角度来看)。有关更多信息,请参阅this article on case folding中的“土耳其语'i'”部分。
要在不修改原始字符串的情况下解决问题,可以使用String.Equals
方法,该方法接受要比较的字符串的参数以及指定要使用的比较类型的参数。
因此,您的代码可能如下所示:
if (string.Equals(boyName, "Bobby", StringComparison.OrdinalIgnoreCase))
或者您可以使用实例方法版本,它稍微短一些:
if (boyName.Equals("Bobby", StringComparison.OrdinalIgnoreCase))
https://stackoverflow.com/questions/55750996
复制相似问题