C# - 将一个字符串变量与多个其他字符串进行比较 (String.Equals)



你有避免做多个String.Equals的想法吗?例如:

if (interSubDir.Equals("de") || interSubDir.Equals("de-DE"))

谢谢!

如果您只是想使其更具可读性,或者需要更少的类型,则可以编写如下所示的字符串扩展方法:

public static class StringExt
{
    public static bool EqualsAnyOf(this string value, params string[] targets)
    {
        return targets.Any(target => target.Equals(value));
    }
}

您可以按如下方式使用:

if (interSubDir.EqualsAnyOf("de", "de-DE"))

if (interSubDir.EqualsAnyOf("de", "de-DE", "en", "en-GB", "en-US"))

等等。

创建值集合:

string[] values = { "de", "de-DE" };

使用Contains方法:

if (values.Contains(interSubDir))

它提供 O(n( 性能。

如果你的集合非常大,那么你可以使用Array.BinarySearch方法,这给你O(log n(性能。

if (Array.BinarySearch(values, interSubDir) >= 0)

但是,必须先对集合进行排序。

Array.Sort(values);

Linq可能会有用。 listToCheckAgainst可以是一个简单的变量或私有/公共属性。

var listToCheckAgainst = new[] { "de", "DE-de" };
if(listToCheckAgainst.Any(x => interSubDir.Equals(x)));

相关内容

最新更新