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

时间:2013-08-22 10:53:13

标签: c# string visual-studio-2010

我们说我有2个字符串。第一个字符串是x =" abc"第二个是y =" ABC"。当我在c#中写下代码后:

if(x == y)

if(x.Equals(y))

返回值为true。如何检查大小写?

5 个答案:

答案 0 :(得分:25)

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

来自String.Equals

  

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

对于==String.Equality operator调用Equals后也是如此:

  

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

这将比较不区分大小写:

bool equals = x.Equals(y , StringComparison.OrdinalIgnoreCase);

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

bool isUpperChar = Char.IsUpper("ABC"[0]); // yes
bool isLowerChar = Char.IsLower("ABC"[0]); // no

答案 1 :(得分:6)

首先,您应该决定是否比较culture dependent独立方式的字符串(例如俄语文化字母“E”和“Ё”通常视为相同;芬兰语倾向将“V”和“W”视为相同等等。接下来,您应该选择是否使用 case (“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);

目前的文化比较:

// 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);

明确的文化比较:

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);

答案 2 :(得分:2)

正如Pleun所写,或者你可以

StringComparer.CurrentCultureIgnoreCase.Equals(a, b)

请注意,我们使用的是CurrentCulture排序方法。有时您将不得不使用不同的排序方法(每种语言以不同的方式对字母进行排序)

如果您确定只订购ASCII字符,那么

StringComparer.OrdinalIgnoreCase.Equals(a, b)

快一点(或者通常可以选择OrdinalIgnoreCase

的方法

通常转换ToUpper()ToLower()两个字符串来比较它们错误(并且速度慢,因为你必须在比较之前完全转换它们,而它们可能是不同的第一个字符)...错了,因为在土耳其语中有四个i

http://codeblog.jonskeet.uk/2009/11/02/omg-ponies-aka-humanity-epic-fail/

答案 3 :(得分:1)

尝试:

区分大小写:

String.Equals (a,b)

不区分大小写

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

答案 4 :(得分:1)

这是您可以尝试的另一种选择。

if(string.Compare("a", "A", true) == 0)