以下代码将打开一个包含单词“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");
}
}
}
提前致谢
答案 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
}