C#忽略if语句的字母大小写

C#忽略if语句的字母大小写,c#,if-statement,C#,If Statement,我有以下声明: if (input == 'day') Console.Write({0}, dayData); 当用户键入“day”时,应该是这样,以便控制台将数据写入该数组中。它工作正常,但如果用户键入“DaY”或“DaY”等,是否仍有办法让它工作。我知道我可以做到: if (input == 'day' || input == 'dAy' || input == 'DaY') Console.WriteLine({0}, dayData); 但有没有办法让它变得更短、

我有以下声明:

if (input == 'day')
    Console.Write({0}, dayData);
当用户键入“day”时,应该是这样,以便控制台将数据写入该数组中。它工作正常,但如果用户键入“DaY”或“DaY”等,是否仍有办法让它工作。我知道我可以做到:

if (input == 'day' || input == 'dAy' || input == 'DaY')
     Console.WriteLine({0}, dayData);
但有没有办法让它变得更短、更整洁呢? 谢谢

如果您的代码是国际化的,您正在编写一个库,您想要一个小的速度提升,您在循环中或使用大字符串等等,请使用以下方法:

if (input.Equals("day", StringComparison.OrdinalIgnoreCase)) { }
或者使用特定的国际文化:

if (string.Compare(input, "day", true, new CultureInfo("de-DE")) == 0) { }

Equals方法允许您在比较中设置配置,并且可以将其设置为忽略大小写

if (string.Equals(input, "day", StringComparison.InvariantCultureIgnoreCase))

string.Equals
方法允许您检查字符串的内容并忽略大小写,例如:

if (input.Equals("day", StringComparison.OrdinalIgnoreCase))
{

}

您提到了一个数组,所以我假设您同时输入了多个内容(如“日”、“日”等)

编辑:这将检查数组中的每个项目,写入控制台,然后在其中一个是“天”时停止

if(str1.Equals(str2, StringComparison.InvariantCultureIgnoreCase))
{
    //...
}

第二个参数允许您使用六种预定义的比较模式之一。

这很有效!似乎比其他答案更简单,包含的代码也更少。谢谢DDon不要忘记,如果它对您有用,请将此作为答案you@JJ85,不客气。如果代码是国际性的,Juan的方法实际上更正确(我认为OrdinalingOrecase除外)。不要忘记,这种方法存在一个问题,即如果输入为null,它将崩溃。@Juan可以通过检查
input!=在尝试
输入之前,为null
。toLower
;如果这不是一个国际应用程序,那么使用此解决方案并执行空check@Evorlor国际。如果此代码在外国运行,则ToLower可能无法工作。我真希望默认情况下它的语法不那么冗长。@miliesmith你的意思是你的代码不能在国际上运行,juan's will?是的@evorl[字符要求],与公认的答案相比,它有一个很大的优势:你自己不需要将str1和str2都转换成小写!这意味着,如果
str1=“HeLLo”
str2=“HeLLo”
,它将很好地完成工作并评估为
true
+1对于此:-)
foreach (var item in input)
{
    if (item.ToLower() == "day")
    {
        Console.WriteLine("{0}", item);
        break;
    }
}
if(str1.Equals(str2, StringComparison.InvariantCultureIgnoreCase))
{
    //...
}