简体   繁体   English

C#中的字符串比较

[英]string comparison in c#

I want to compare two strings and one of them may be a null string, am using StringComparison.InvariantCultureIgnoreCase feature of C#. 我想比较两个字符串,其中一个可能是null字符串,正在使用C#的StringComparison.InvariantCultureIgnoreCase功能。 This throws an exception in runtime when a null string is encountered. 遇到null字符串时,将在运行时引发异常。 What shall I do to be able to compare even null strings? 我应该怎么做才能比较null字符串?

use 采用

 string.Compare(s1, s2, StringComparison.InvariantCultureIgnoreCase);

benefit of using this is that it will return 0 (equal) if two strings are null - which is the expected result. 使用此方法的好处是,如果两个字符串为null ,则它将返回0(等于)-这是预期的结果。

As well as the options already given to you, you can consider using StringComparer.InvariantCultureIgnoreCase instead. 除了已经提供给您的选项之外,您还可以考虑使用StringComparer.InvariantCultureIgnoreCase StringComparer handles nulls without throwing exceptions: StringComparer处理null时不会抛出异常:

using System;

class Test
{
    static void Main()
    {
        StringComparer comparer = StringComparer.InvariantCultureIgnoreCase;
        Console.WriteLine(comparer.Compare("a", "A"));
        Console.WriteLine(comparer.Compare("a", null));
        Console.WriteLine(comparer.Compare(null, "A"));
    }
}

您可以使用

if (String.IsNullOrEmpty(yourString)) { // If true... }

Depens on what do you want to happen when string is null. 取决于当string为null时要发生什么。

You may simply fall back to empty string like this: (str ?? "").Compare(...) 您可以简单地回到空字符串,如下所示: (str ?? "").Compare(...)

This from a post I remember @Jon Skeet answering a question about comparing: 我记得@Jon Skeet在一篇帖子中回答了有关比较的问题:

string myCompareString = "compare me";

if(myCompareString.Equals(myOtherMaybeNullString, StringComparison.InvariantCultureIgnoreCase))
{
   // blah blah
}

Causes the comparison against a string you know is not null to a string that might be null (unless you are comparing 2 potentially null strings). 导致对您知道不为null的字符串与可能为null的字符串进行比较(除非您要比较2个可能为null的字符串)。

Just as a extra option String.Equals handles null so you could also use: 就像额外的选项String.Equals处理null一样,因此您也可以使用:

using System; 使用系统;

class Test
{
    static void Main()
    {
            var a = String.Equals("test", "Test", StringComparison.InvariantCultureIgnoreCase);
            var b = String.Equals("test", null, StringComparison.InvariantCultureIgnoreCase);
            var c = String.Equals(null, "Test", StringComparison.InvariantCultureIgnoreCase);
            var d = String.Equals(null, null, StringComparison.InvariantCultureIgnoreCase);
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM