如何比较两个字符串及其大小写符号

dai*_*dai 16 c# string visual-studio-2010

假设我有2个字符串.第一个字符串是x ="abc",第二个字符串是y ="ABC".当我在c#中写下代码:

if(x == y)
Run Code Online (Sandbox Code Playgroud)

要么

if(x.Equals(y))
Run Code Online (Sandbox Code Playgroud)

返回值为true.如何查看大小写?

Tim*_*ter 26

返回值不是, truefalse因为.NET默认情况下区分大小写.

来自String.Equals:

此方法执行序数(区分大小写和文化不敏感)比较.

对于==相同的,因为是真实的String.Equality运营商电话Equals:

此运算符使用Equals方法实现,这意味着对比例进行了参考和值相等的组合测试.此运算符执行序数比较.

这将比较不区分大小写:

bool equals = x.Equals(y , StringComparison.OrdinalIgnoreCase);
Run Code Online (Sandbox Code Playgroud)

如果您只想知道字符是大写还是小写,可以使用以下方法:

bool isUpperChar = Char.IsUpper("ABC"[0]); // yes
bool isLowerChar = Char.IsLower("ABC"[0]); // no
Run Code Online (Sandbox Code Playgroud)


Dmi*_*nko 6

首先,你应该决定是否你比较字符串culture dependent独立的俄罗斯文化信件的方式(例如,"E"和"Ё"往往将其视为是相同的;芬兰倾向于把"V"和"W"为同一等. ).接下来你应该选择是否使用用("a"v."A").所以有6种可能的比较:

序数(独立于文化)比较:

// Ignore case comparison
Boolean equals = String.Equals(x, y, StringComparison.OrdinalIgnoreCase);
// Case comparison
Boolean equals = String.Equals(x, y, StringComparison.Ordinal);
Run Code Online (Sandbox Code Playgroud)

目前的文化比较:

// Current culture, ignore case comparison
Boolean equals = String.Equals(x, y, StringComparison.CurrentCulture);
// Current culture, case comparison
Boolean equals = String.Equals(x, y, StringComparison.CurrentCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)

明确的文化比较:

CultureInfo culture = new CultureInfo("Ru-ru"); // <- Or whatever you want

// Explicit culture, ignore case comparison
Boolean equals = culture.CompareInfo.Compare(x, y, CompareOptions.IgnoreCase);
// Explicit culture, case comparison
Boolean equals = culture.CompareInfo.Compare(x, y, CompareOptions.None);
Run Code Online (Sandbox Code Playgroud)


Ple*_*eun 1

尝试:

区分大小写:

String.Equals (a,b)
Run Code Online (Sandbox Code Playgroud)

不区分大小写

string.Equals(a, b, StringComparison.CurrentCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)