2

我正在编写一个输入为两个字符串的方法,该方法应返回三个值之一:+1当字符串具有完全相同的值(其字符的 Unicode 值)时,0当字符串具有完全相同的值时,除了基本拉丁语( ASCII) 字符的大小写不同,-1否则。我有:

    public static int MyCompare(string s1, string s2)
    {
        return string.Equals(s1, s2, StringComparison.OrdinalIgnoreCase)
            ? (string.Equals(s1, s2, StringComparison.Ordinal) ? 1 : 0)
            : -1;
    }

该方法将用于相对较短的字符串(通常 < 25 个字符),但我想知道是否有比执行两次string.Equals调用更好的方法来实现这一点。

4

1 回答 1

3

不,基本上 - 没有编写自己的逐个字符比较,并手动处理所有案例逻辑(我不建议这样做;现有代码经过充分测试和优化等)。

请注意,第二个Equals仅在不区分大小写的匹配中被调用,因此对于大多数字符串(我们可以合理地假设“未命中”比“命中”更多)它只是一个调用Equals 反正。所以我个人在这里不会太担心。

于 2013-08-09T11:46:20.817 回答