如何在C#中使字符串输入不区分大小写?

问题描述 投票:-3回答:2

因此,在我学习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”或它将触发其他条件

c# string case-sensitive uppercase lowercase
2个回答
2
投票

你应该试试

if (boyName.ToUpper() == "Bobby".ToUpper())

3
投票

在技​​术上更好的是使用不区分大小写的比较而不是更改被比较的字符串的大小写,因为ToUpper()并不总是按预期(从比较的角度)与所有语言(字母表)一起工作。有关详细信息,请参阅this article on case folding中的“土耳其'i'”部分。

要在不修改原始字符串的情况下解决问题,可以使用String.Equals方法,该方法接受要比较的字符串参数以及指定要使用的比较类型的参数。

因此,您的代码可能如下所示:

if (string.Equals(boyName, "Bobby", StringComparison.OrdinalIgnoreCase))

或者你可以使用实例方法版本,这个版本稍短:

if (boyName.Equals("Bobby", StringComparison.OrdinalIgnoreCase))
© www.soinside.com 2019 - 2024. All rights reserved.