C#无法按预期字母序比较字符串,string.Compare结果异常如何解决
问题原因
你遇到的对比结果异常是因为string.Compare默认使用当前系统区域文化的排序规则,这类规则会对大小写、连字符等特殊字符做自定义加权处理,不会严格按照字符的Unicode/ASCII编码值逐位比较,和你需要的原始字符串字母序规则不匹配。
解决方法
使用StringComparison.Ordinal枚举参数指定采用序数比较规则,该规则会严格按照每个字符的编码值逐位对比,完全匹配你给出的排序预期:
string first = "-MmNI8oyb2QE_9V0WdaX"; string second = "-MmOAFDL9ZPD1gx4SjEU"; string third = "-MmPtIJ1LpFTRbweNWvD"; string fourth = "-MmPtd0IMuNIEYaPYPgZ"; // 按序数规则对比 string.Compare(third, fourth, StringComparison.Ordinal); // 输出-1,符合third < fourth的预期 string.Compare(second, third, StringComparison.Ordinal); // 输出-1 string.Compare(first, second, StringComparison.Ordinal); // 输出-1
如果需要不区分大小写的序数对比,可以替换为StringComparison.OrdinalIgnoreCase参数。
内容的提问来源于stack exchange,提问作者SHAI
相关产品推荐
相关产品推荐

