【问题标题】:string.Compare behaviorstring.Compare 行为
【发布时间】:2009-12-09 12:52:53
【问题描述】:

这怎么可能? (这取自VS2008中的即时窗口)

?string.Compare("-", "+")
-1
?string.Compare("-0", "+0")
1

【问题讨论】:

    标签: .net string localization string-comparison


    【解决方案1】:

    来自String.Compare 上的评论(强调我的):

    比较使用当前文化来获取特定于文化的信息,例如大小写规则和单个字符的字母顺序。例如,文化可以指定某些字符组合被视为单个字符,或以特定方式比较大小写字符,或字符的排序顺序取决于前面或后面的字符它

    【讨论】:

    • 嘿,约翰内斯,我看到了。但我的机器是XP英文设置。而 + 和 - 是低于 127 的标准 ascii 字符。我看不出 0 如何影响它们在我当前文化中的相对顺序。
    • 虽然有时违反直觉,但复杂的字符串比较函数(例如此处的String.Compare)可能有一些细节,例如在“Straße”附近排序“Strasse”,在“ecole”和“file9.txt”附近排序“école” " 在 "file10.txt" 附近。
    • @Juan 即使在英文设置中,“file10.txt”之前的后一个示例“file9.txt”也是可取的,并且一旦添加零,您可能会以某种方式陷入这种情况。
    • Juan:仅仅因为在历史上很少特别注意英语的排序规则并不意味着没有英语语言环境可能不同于纯 ASCII 或代码点排序顺序。这不像英语是一种不需要任何计算机特殊规则的语言。
    • 谢谢大家。最初的问题是我必须使用 int 和 string 字段的组合对列表进行排序。为了解决这个问题,我构建了一个字符串,它结合了试图遵循字符串顺序的两者。我已经通过对 int 值的偏移解决了这个问题,因此所有值都是正数。作为附加信息,c++ wcscmp 在我的机器中表现良好。再次感谢您
    【解决方案2】:

    C# 手册写道:

    比较使用当前 文化以获得特定的文化 信息,例如大小写规则和 个人的字母顺序 人物。例如,一种文化 可以指定某些 字符组合被处理 作为单个字符或大写 和小写字符进行比较 以特定的方式,或 字符的排序顺序取决于 在前面的字符上或 跟着它。

    比较是使用word进行的 排序规则。有关更多信息 单词、字符串和序数排序,请参阅 System.Globalization.CompareOptions.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多