2017-08-03 69 views
0

需要对.net winforms应用程序不区分大小写的字符串比较。在我的代码中比较字符串时不会出现问题,但我需要随处使用它。 例如:组合框包含从SQL数据填充的项目,其中value成员是大写字符串,但绑定到此组合框的实体字段允许值(字符串)小写。其余元素相同。为.net winforms应用程序进行字符串比较不区分大小写

+0

你在做'str1 == str2'某种地方的东西吗? – TheVillageIdiot

+0

“在我的代码中比较字符串时不会出现问题,但我需要这个地方。”你能更精确一点吗?=!你想比较你的代码之外的字符串? –

+0

有一个例子(结合在组合框的值),它应该是字符串比较 – Dmitry

回答

1

您无法更改.net中字符串的默认比较。 .net是一个区分大小写的语言。它具有使用不同级别的区分大小写比较字符串的具体方法,但是(谢天谢地)没有全局设置。

-1

使用

if (string1.ToLower().Equals(string2.ToLower())) 
{ 
    #something 
} 

没有代码,没有其他意见,我可以为您提供:/

+1

这不是做的情况下不变的字符串比较,因为它不必要地分配每个字符串的小写副本的首选方法。相反,按照[这个答案](https://stackoverflow.com/a/13965429/3744182)的意见,并做'String.Equals(S1,S2,StringComparison.OrdinalIgnoreCase)'。参见[这里](https://docs.microsoft.com/en-us/dotnet/standard/base-types/best-practices-strings#specifying_string_comparisons_explicitly)的信息;可能OP会希望使用“字符串比较。当前文化IgnoreCase”用于UI目的。 – dbc

1

您可以使用此:

string.Equals(a, b, StringComparison.CurrentCultureIgnoreCase); 

或扩展方法:

public static class StringExtensions 
{ 
    public static bool Contains(this string source, string value, StringComparison compareMode) 
    { 
     if (string.IsNullOrEmpty(source)) 
      return false; 

     return source.IndexOf(value, compareMode) >= 0; 
    } 
} 

和你可以这样称呼它:

bool result = "This is a try".Contains("TRY", 
StringComparison.InvariantCultureIgnoreCase); 
Console.WriteLine(result); 
相关问题