2014-02-18 48 views
3

以下代碼將打開一個包含單詞「Fail」的消息框。C#如果等於大小寫不敏感

有沒有辦法讓if語句不區分大小寫,這樣if語句會傳遞並打開一個包含「Pass」的mbox而不會將字符/字符串轉換爲大寫/小寫?

這裏是代碼:

public partial class Form1 : Form 
    { 
     string one = "A"; 
     string two = "a"; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      if (one == two) 
      { 
       MessageBox.Show("Pass"); 
      } 
      else 
      { 
       MessageBox.Show("Fail"); 
      } 
     } 
    } 

在此先感謝

回答

8

您可以使用此

string.Equals(one, two, StringComparison.CurrentCultureIgnoreCase) 

你的代碼將是

if (string.Equals(one, two, StringComparison.CurrentCultureIgnoreCase)) 
{ 
    MessageBox.Show("Pass"); 
} 
else 
{ 
    MessageBox.Show("Fail"); 
} 


使用CurrentCultureIgnoreCase

使用比較文化敏感的排序規則的字符串,目前 文化,並進行比較忽略字符串的情況。

更多信息here

-2
if(one.ToLower() == two.ToLower()) 
{ 
    //Do stuff 
} 
+1

1)此代碼不能編譯。 2)違反了粗體問題的前提。 –

+0

@ColinDeClue對不起,我忘了'()'s。並且調用ToLower不會改變實際變量,所以如果OP稍後使用這些變量,它們將顯得不變。 – Logarr

0

使用不區分大小寫字符串比較器:

if(StringComparer.OrdinalIgnoreCase.Equals(one, two)) 

你也應該,如果這比較需要在用戶的文化做考慮。

1

各種選項:

if (String.Compare(one, two, StringComparison.CurrentCultureIgnoreCase) == 0) { 
    // they are equal 
} 

選項2:

if ((one ?? "").ToLower() == (two ?? "").ToLower()) 
    // they are equal 
} 

這裏有很多其他選擇,但這些應該讓你開始!

備註 - 人們經常忘記字符串比較的一件事是空值。一定要注意空值,但是你做了比較。我介紹的第二個選項在這方面做得非常出色。

0

您應該使用.Equals()來比較字符串。然後,您可以使用StringComparison.OrdinalIgnoreCase作爲忽略大小寫的第三個參數。

0

您可以也使用此

string one = "obi"; 
string two = "Obi"; 

if(one.Equals(two, StringComparison.OrdinalIgnoreCase)) 
{ 
    /* Your code */ 
}