我需要根据起始模式在一个非常国际化的项目(所有可能的拉丁字符)中找到一个名称子集。例如:
"more, moreover", "morse"
with 模式more
将返回前两个元素。到目前为止,我使用了TreeSet
带有基本字符串排序的 a (即String
-s compareTo
),并使用以下代码进行模式匹配:
String end = start.substring(0, start.length()-1) + (char)(start.charAt(start.length()-1) + 1);
SortedMap<String, Long> matching= empIndexByName.subMap(start, end);
换句话说:我用 int 值替换最后一个字母,并用more
,查询 subMap morf
。如果是非 ascii 字符,这当然会失败。例如,如果搜索表达式以é
, é+1
is not结尾f
。这两个问题是我需要将字符串与不同地区的不同字母进行比较,并且还要以某种方式确定字母表中的下一个字符。
除了编写我自己的代码表之外,还有什么方法可以用基本的 java (javase5) 做到这一点?(或者任何好的国际图书馆?我已经听说过 ICU。)