2014-02-18 3 views
3

Следующий код откроет окно сообщений, содержащее слово «Fail».C# If Equals Case нечувствительный

Есть ли способ сделать регистр if нечувствительным, так что оператор if проходит и открывает mbox, контактирующий с «Pass», без преобразования символа/строки в верхний/нижний регистр?

вот код:

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

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

Из MSDN:

StringComparer.CurrentCultureIgnoreCase Property

Получает StringComparer объект, который выполняет регистронезависимых сравнения строк, используя правила сравнения слов из текущая культура.

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 */ 
} 
Смежные вопросы