【发布时间】:2020-10-07 02:22:50
【问题描述】:
ch1、ch2、ch1 <> ch2、ch1 和ch2 是否有任何两个字符是小写字母,其中uppercase(ch1) == uppercase(ch2)? Unicode中真的有这样的字符吗?
一个后续问题是:对于任何一个小写字母的ch,以下表达式是否总是正确的?
ch == lowercase(uppercase(ch))
【问题讨论】:
-
是的,这些字符有很多,但更复杂的是,小写()和大写()的结果取决于您使用的语言环境。见doted and dotless I。
-
这个问题可能只是出于好奇,但也许不是。是否存在您要解决的潜在问题?因为如果有的话,很有可能它已经有了解决方案。
-
@JoachimSauer 我的根本问题是我正在考虑一种特定的算法来解决对区分大小写的标识符的不区分大小写的引用。上面的假设很重要,但现在我发现我不能使用它。
-
您可以使用具有正确语言环境和强度的
Collator构建ColationKey。CollationKeys的比较速度非常快,因为它们只是进行二进制比较。您可以为所有标识符预先构建CollationKeys,并使用相同的Collator从输入参数中进行查找。请注意,这仍然需要 specfic 语言环境才能正常工作(您不能真正忽略它,因为大小写折叠规则因语言环境而异)。 -
@JoachimSauer 我的问题不同。让我们坚持这个问题,我认为它总体上很有趣。
标签: unicode uppercase lowercase