2017-08-03 72 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); 
相關問題