【发布时间】:2016-10-06 06:51:11
【问题描述】:
我想比较两个不区分大小写的字符串,但我不确定最好的方法。字符串的平均长度为 20,这个问题更多的是关于最先进的技术,而不是关于最佳性能
我的大部分代码都使用了
bool output = "foo".ToLower() == "FOO".ToLower();
这对我来说似乎有点过时了。另一种我见过很多次的方式是
bool output = Regex.IsMatch("foo", "FOO", RegexOptions.IgnoreCase);
我想这是可能的,但 RegEx 不适合这么简单的事情。
之后剩下3条“好”的方式:
bool output = string.Compare("foo", "FOO", StringComparison.CurrentCultureIgnoreCase) == 0;
bool output = string.Compare("foo", "FOO", true) == 0;
bool output = "foo".Equals("FOO", StringComparison.CurrentCultureIgnoreCase);
【问题讨论】:
-
这是一个基于意见的问题。但在我看来:
string.Equals("x", "y", StringComparison.OrdinalIgnoreCase) -
源索引不是一个选项?
-
“最好的”是什么意思?最佳性能、最短、最易读?
-
@NikaGamkrelidze 都在第二句中说了