我正在进入我的绳索(一个更具可扩展性的版本String
)实施的最后阶段。显然,我希望所有操作尽可能给出与 s 上的操作相同的结果String
。
为序数操作执行此操作非常简单,但我担心正确实施文化敏感操作。特别是因为我只知道两种语言,并且在这两种语言中,文化敏感操作的行为与序数操作完全相同!
那么有没有什么具体的事情我可以测试并至少让我对我做正确的事情有信心?例如,当忽略德语中的大小写时,我知道 ß 等于 SS;关于土耳其语中加点和不加点的 i。
我正在进入我的绳索(一个更具可扩展性的版本String
)实施的最后阶段。显然,我希望所有操作尽可能给出与 s 上的操作相同的结果String
。
为序数操作执行此操作非常简单,但我担心正确实施文化敏感操作。特别是因为我只知道两种语言,并且在这两种语言中,文化敏感操作的行为与序数操作完全相同!
那么有没有什么具体的事情我可以测试并至少让我对我做正确的事情有信心?例如,当忽略德语中的大小写时,我知道 ß 等于 SS;关于土耳其语中加点和不加点的 i。
代理对,如果您打算支持它们 - 包括无效组合(例如,只有一个的一部分)。
如果您正在进行编码和解码,请确保您保留足够的状态以应对任意给出的二进制数据块进行解码,这些数据块可能在一个字符的一半结束,剩下的一半在下一个字符中。
土耳其语测试是我所知道的最好的 :)
您应该模仿 String 方法的实现,并使用核心库为您执行此操作。很难考虑每种文化的每一个可能方面。与其重新发明轮子,不如在 String 方法上使用反射器并查看内部调用。例如 String.Compare 使用 CultureInfo.CurrentCulture.CompareInfo.Compare 比较当前文化中的 2 个字符串。