写一个更好的自然类型(比我的)
我在这里添加了这个问题的答案:在C#中排序
List<String>
,它需要一个自然排序顺序,一个处理嵌入数字的顺序。
然而,我的实现是天真的,并且代替所有关于应用程序如何通过假设(土耳其测试任何人?)正确处理Unicode的帖子,我想我会请求帮助编写更好的实现。或者,如果有.NET的内置方法,请告诉我:)
我对该问题中答案的实现只是通过字符串,逐个字符地进行比较,直到它遇到两个数字。然后它从两个字符串中提取连续的数字,这可能导致长度变化,用前导零填充最短的数字,然后进行比较。
但是,它存在问题。
例如,如果你在字符串x中有两个代码点,它们共同构成字符È,但在另一个字符串中你只有一个代码点,即那个字符。
我的算法会失败,因为它会将变音符号码视为单个字符,并将其与其他字符串中的È进行比较。
任何人都可以指导我如何妥善处理这个问题?我希望支持指定一个CultureInfo
对象来处理语言问题,比如在德国比较“ss”和“ß”,以及类似的东西。
我想我需要让我的代码枚举“真实字符”(我不知道真正的术语)而不是单个代码点。
什么是正确的方法?
此外,如果“自然”意味着“人类期望它的工作方式”,我会在思考时添加以下内容:
日期和时间怎么样?
浮点值怎么样?
还有其他被认为是“自然”的序列吗?
这应该延伸多远? (Eeny,meeny,miny,moe)
没有找到相关结果
已邀请:
2 个回复
信藉乒
部窖空
但是正确的字符类如
,也应该可以支持unicode。 至于È的不同形式的比较,您可以尝试首先规范化字符串。