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

时间:2019-04-18 17:23:55

标签: c# string case-sensitive uppercase lowercase

因此,在学习C#的过程中,我试图创建一个交互式故事,该故事根据用户提交的某些输入而变化。如果在这种情况下用户输入“ Bobby”,则讲述人将开始像Hank Hill一样讲话。但是,根据其编程方式,输入区分大小写。

我尝试过一件事,我发现这是将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条件

2 个答案:

答案 0 :(得分:3)

使用不区分大小写的比较而不是更改要比较的字符串的大小写在技术上要好一些,因为ToUpper()在所有语言(字母)上都无法始终按预期(从比较的角度来看)工作。有关更多信息,请参见this article on case folding中的“土耳其语'i'”部分。

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

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

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

或者您可以使用实例方法版本,该版本要短一些:

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

答案 1 :(得分:2)

您应该尝试

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