簡體   English   中英

如何在 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 條件

從技術上講,使用不區分大小寫的比較而不是更改被比較字符串的大小寫更好,因為ToUpper()並不總是按預期工作(從比較的角度來看)與所有語言(字母表)。 有關詳細信息,請參閱本文中有關案例折疊的“土耳其語‘i’”部分。

要在不修改原始字符串的情況下解決您的問題,您可以使用String.Equals方法,該方法接受要比較的字符串的參數以及指定要使用的比較類型的參數。

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

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

或者你可以使用實例方法版本,它有點短:

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

你應該試試

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM