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

How to make string inputs case insensitive in C#?

因此,在我学习 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 条件

你应该试试

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

从技术上讲,使用不区分大小写的比较比更改被比较字符串的大小写更好,因为 ToUpper() 并非总是按预期(从比较的角度来看)所有语言工作(字母)。有关详细信息,请参阅 this article on case folding 中的 "the Turkish 'i'" 部分。

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

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

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

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

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