我正在编写一个输入为两个字符串的方法,当字符串具有完全相同的值(字符的Unicode值)时,该方法应返回三个值中的一个:+1
,0
当字符串具有完全相同的值,但Basic Latin(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
调用。
答案 0 :(得分:2)
不,基本上 - 没有编写自己的逐个字符比较,并且手动处理所有案例逻辑(我不推荐;现有代码经过充分测试和优化等)。
请注意,第二个Equals
仅针对不区分大小写的匹配进行调用,因此对于大多数字符串(我们可以合理地假设有更多“未命中”而非“命中”)无论如何只需拨打Equals
一次。所以我个人不会太在意这里。