C# 如何使用if语句、文本进行检查,但不使用';t检查大小写
这是我的代码:C# 如何使用if语句、文本进行检查,但不使用';t检查大小写,c#,visual-studio,C#,Visual Studio,这是我的代码: if (txtboxAntwoord.Text == lblProvincie.Text) { } 我想要实现的是:生成if语句,这样它就可以检查文本是否相同,但不会检查文本是否包含大写或小写 比如说lblProvincie的text=“Some text”,我想检查txtboxAntwoord的包含文本是否相同,但它是否包含文本的大写字母并不重要。您可以对这两个值使用ToUpper()或ToLower,这样两个值的
if (txtboxAntwoord.Text == lblProvincie.Text)
{
}
我想要实现的是:生成if语句
,这样它就可以检查文本是否相同,但不会检查文本是否包含大写或小写
比如说lblProvincie的text=“Some text”,我想检查txtboxAntwoord
的包含文本是否相同,但它是否包含文本的大写字母并不重要。您可以对这两个值使用ToUpper()
或ToLower
,这样两个值的大小写都相同,你可以这样做:
if (txtboxAntwoord.Text.ToUpper() == lblProvincie.Text.ToUpper())
您可以在两个值上使用ToUpper()
或ToLower
,以便两个值的大小写大小写相同,您可以像这样执行:
if (txtboxAntwoord.Text.ToUpper() == lblProvincie.Text.ToUpper())
您可以对字符串使用.Equals
方法,并传入忽略大小写的字符串比较选项
if (string.Equals(txtboxAntwoord.Text, lblProvincie.Text,
StringComparison.OrdinalIgnoreCase))
对于纯速度而言,基于文化的比较并不重要
或
如果您需要考虑基于文化的比较
虽然这种方法可能稍微复杂一些,但它比ToUpper()
方法更有效,因为不需要分配新字符串。它还可以指定不同的比较选项,例如CurrentCultureInogoreCase
虽然这可能不会对孤立上下文中的应用程序性能产生太大影响,但在进行大量字符串比较时,这肯定会产生影响
const string test1 = "Test1";
const string test2 = "test1";
var s1 = new Stopwatch();
s1.Start();
for (int i = 0; i < 1000000; i++)
{
if (!(test1.ToUpper() == test2.ToUpper()))
{
var x = "1";
}
}
s1.Stop();
s1.ElapsedMilliseconds.Dump();
var s2 = new Stopwatch();
s2.Start();
for (int i = 0; i < 1000000; i++)
{
if(!string.Equals(test1, test2,
StringComparison.OrdinalIgnoreCase))
{
var x = "1";
}
}
s2.Stop();
s2.ElapsedMilliseconds.Dump();
常量字符串test1=“test1”;
常量字符串test2=“test1”;
var s1=新秒表();
s1.Start();
对于(int i=0;i<1000000;i++)
{
如果(!(test1.ToUpper()==test2.ToUpper())
{
var x=“1”;
}
}
s1.停止();
s1.elapsedmillesons.Dump();
var s2=新秒表();
s2.Start();
对于(int i=0;i<1000000;i++)
{
如果(!string.Equals)(test1,test2,
StringComparison.Ordinalingorecase)
{
var x=“1”;
}
}
s2.停止();
s2.elapsedmillesons.Dump();
第一个人为的例子在我的机器上花了265毫秒进行了100万次迭代。第二个只需要25分钟。此外,每个迭代都有额外的字符串创建
根据Mike在评论中的建议,同样对CurrentCultureInogoreCase
进行分析是公平的。这仍然比ToUpper
更有效,耗时114毫秒,仍然是ToUpper
的两倍多,并且不分配额外的字符串。您可以对字符串使用.Equals
方法,并传入忽略大小写的字符串比较选项
if (string.Equals(txtboxAntwoord.Text, lblProvincie.Text,
StringComparison.OrdinalIgnoreCase))
对于纯速度而言,基于文化的比较并不重要
或
如果您需要考虑基于文化的比较
虽然这种方法可能稍微复杂一些,但它比ToUpper()
方法更有效,因为不需要分配新字符串。它还可以指定不同的比较选项,例如CurrentCultureInogoreCase
虽然这可能不会对孤立上下文中的应用程序性能产生太大影响,但在进行大量字符串比较时,这肯定会产生影响
const string test1 = "Test1";
const string test2 = "test1";
var s1 = new Stopwatch();
s1.Start();
for (int i = 0; i < 1000000; i++)
{
if (!(test1.ToUpper() == test2.ToUpper()))
{
var x = "1";
}
}
s1.Stop();
s1.ElapsedMilliseconds.Dump();
var s2 = new Stopwatch();
s2.Start();
for (int i = 0; i < 1000000; i++)
{
if(!string.Equals(test1, test2,
StringComparison.OrdinalIgnoreCase))
{
var x = "1";
}
}
s2.Stop();
s2.ElapsedMilliseconds.Dump();
常量字符串test1=“test1”;
常量字符串test2=“test1”;
var s1=新秒表();
s1.Start();
对于(int i=0;i<1000000;i++)
{
如果(!(test1.ToUpper()==test2.ToUpper())
{
var x=“1”;
}
}
s1.停止();
s1.elapsedmillesons.Dump();
var s2=新秒表();
s2.Start();
对于(int i=0;i<1000000;i++)
{
如果(!string.Equals)(test1,test2,
StringComparison.Ordinalingorecase)
{
var x=“1”;
}
}
s2.停止();
s2.elapsedmillesons.Dump();
第一个人为的例子在我的机器上花了265毫秒进行了100万次迭代。第二个只需要25分钟。此外,每个迭代都有额外的字符串创建
根据Mike在评论中的建议,同样对
CurrentCultureInogoreCase
进行分析是公平的。这仍然比ToUpper
更有效,需要114毫秒,这仍然是ToUpper
的两倍多,并且不分配额外的字符串。您正在寻找的是所谓的“不区分大小写的字符串比较”
您可以使用Ehsan Sajjad的建议来实现它,但这将是低效的,因为对于每个比较,您将生成至少一个(在他的示例中是两个,但可以优化)新字符串以包含要比较的字符串的大写版本,然后立即让该字符串被垃圾收集
David L的建议肯定会表现得更好,不过我建议不要使用StringComparison.ordinallingorecase
,因为它忽略了当前的文化
相反,请使用以下命令:
string.Equals( text1, text2, StringComparison.CurrentCultureIgnoreCase )
您需要的是“不区分大小写的字符串比较” 您可以使用Ehsan Sajjad的建议来实现它,但这将是低效的,因为对于每个比较,您将生成至少一个(在他的示例中是两个,但可以优化)新字符串以包含要比较的字符串的大写版本,然后立即让该字符串被垃圾收集 David L的建议肯定会表现得更好,不过我建议不要使用
StringComparison.ordinallingorecase
,因为它忽略了当前的文化
相反,请使用以下命令:
string.Equals( text1, text2, StringComparison.CurrentCultureIgnoreCase )
查看考虑情况的重载和各种比较方法的概要,查看重载考虑情况和各种比较方法的摘要,而这种方法是简单的,它创建了两个不必要的字符串,即“史提夫字符串”。在这种情况下,单一情况下的差异将毫无意义