C#如果Equals Case不敏感

时间:2014-02-18 20:56:10

标签: c# if-statement boolean case

以下代码将打开一个包含单词“Fail”的消息框。

有没有办法让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");
            }
        }
    }

提前致谢

7 个答案:

答案 0 :(得分:9)

你可以用这个

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

您的代码将是

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

使用 CurrentCultureIgnoreCase

  

使用区分文化的排序规则来比较字符串   文化,忽略了被比较的字符串的情况。

更多信息here

答案 1 :(得分:3)

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

来自MSDN:

  

StringComparer.CurrentCultureIgnoreCase Property

     

使用当前文化的单词比较规则获取一个StringComparer对象,该对象执行不区分大小写的字符串比较

答案 2 :(得分:1)

各种选择:

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

选项2:

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

还有很多其他选择,但这些应该让你开始!

注意 - 人们经常忘记字符串比较的一件事是空值。请务必注意空值,但是要进行比较。我提出的第二个选项非常出色。

答案 3 :(得分:0)

使用不区分大小写的字符串比较器:

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

您还应该考虑是否需要在用户的文化中进行此比较。

答案 4 :(得分:0)

您应该使用.Equals()来比较字符串。然后,您可以使用StringComparison.OrdinalIgnoreCase作为忽略大小写的第三个参数。

答案 5 :(得分:0)

你也可以使用这个

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

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

答案 6 :(得分:-2)

if(one.ToLower() == two.ToLower())
{
    //Do stuff
}