開始パターンに基づいて、非常に国際化されたプロジェクト (すべてのラテン文字が可能) で名前のサブセットを見つける必要があります。例えば:
"more, moreover", "morse"
パターンを使用more
すると、最初の 2 つの要素が返されます。これまで、TreeSet
基本的な文字列の順序付け (つまり、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 値で置き換え、subMap をmore
,でクエリしますmorf
。もちろん、ASCII以外の文字の場合は失敗します。たとえば、検索式が で終わる場合é
、é+1
is notf
です。2 つの問題は、文字列を異なる地域の異なるアルファベットと比較する必要があることと、アルファベットの次の文字をどうにかして決定する必要があることです。
自分のコードテーブルを書く以外に、基本的な Java (javase5) でこれを行う方法はありますか? (または、何か優れた国際ライブラリはありますか? ICU については既に聞いたことがあります。)