这个问题是对 Java字符串搜索忽略重音 的延续。
原问题的答案向我们展示了如何从字符串中删除变音符号。例如,köln 变成了 koln。但是,łódź 变成了 lodz - 请注意带有划线L。
我的问题是如何同时删除划线,以便 łódź 变成 lodz?
谢谢。
原问题的答案向我们展示了如何从字符串中删除变音符号。例如,köln 变成了 koln。但是,łódź 变成了 lodz - 请注意带有划线L。
我的问题是如何同时删除划线,以便 łódź 变成 lodz?
谢谢。
ł
(除了外观和它的 Unicode 名称)与 l
没有任何联系(至少在 Unicode 中是如此;在语言学上则另当别论)。你唯一的选择可能是创建一个转换表,将其中所有需要转换的字符填写进去以供你使用。LATIN SMALL LETTER L WITH STROKE
(即 ł
这个字符)的主排序强度与普通的 LATIN SMALL LETTER L
相同。正确的答案是使用仅设置为一级(primary level)的 Unicode 排序算法来比较字符串。如果你被 Java 绑定了,那么你可能需要使用 ICU,因为 Sun 库没有正确实现 UCA。 - tchristł
被转换为l
?”我猜这可能会使用排序算法(除了枚举所有可能的字符串)。因此,我主要关注分解。不过,我不能删除直到未接受。 - Joey正如tchrist所建议的那样,我尝试使用ICU(V 50.1):它没有将其识别为派生自L。 在Unicode中,带有斜杠的L似乎是一个特殊情况。看看http://bugs.mysql.com/bug.php?id=11369 他们说在Unicode 4.0中它与L没有连接,而在Unicode 4.1中它是连接的。我想知道是否有人用基于Unicode 4.1的Java库测试过这个问题。