5

こんばんは、解決策を見つけるのに苦労しているので、この問題について助けていただければ幸いです。

私には単語の提供者がいて、ヘブライ語の母音を教えてくれます。たとえば -

母音あり - 母音なし - בית

母音あり - 母音なし - 母音なし

私のプロバイダーとは異なり、私のユーザーは通常、ヘブライ語の母音を入力できません (入力してほしくありません)。ユーザーストーリーとは、ユーザーが提供された単語の中から単語を探していることです。問題は、母音のある単語と母音のない単語の比較です。それぞれがメモリ内の異なるバイト配列で表されるため、equals メソッドは false を返します。

UTF-8 がヘブライ語の母音をどのように処理するかを調べてみましたが、通常の文字のようです。

母音をユーザーに提示したいので、文字列をそのままメモリに保持したいのですが、比較するときは無視したいと思います。この問題を解決する簡単な方法はありますか?

4

2 に答える 2

6

Collat​​orを使用できます。私にとっては初めてのことなので、正確にどのように機能しているのかはわかりませんが、これはうまくいくようです:

public static void main( String[] args ) {
    String withVowels = "בַּיִת";
    String withoutVowels = "בית";

    String withVowelsTwo = "הַבַּיְתָה";
    String withoutVowelsTwo = "הביתה";

    System.out.println( "These two strings are " + (withVowels.equals( withoutVowels ) ? "" : "not ") + "equal" );
    System.out.println( "The second two strings are " + (withVowelsTwo.equals( withoutVowelsTwo ) ? "" : "not ") + "equal" );

    Collator collator = Collator.getInstance( new Locale( "he" ) );
    collator.setStrength( Collator.PRIMARY );

    System.out.println( collator.equals( withVowels, withoutVowels ) );
    System.out.println( collator.equals( withVowelsTwo, withoutVowelsTwo ) );
}

そこから、次の出力が得られます。

These two strings are not equal
The second two strings are not equal
true
true
于 2012-10-06T20:37:52.300 に答える
1

私の知る限り、ありません。母音は文字です。文字とドットのいくつかの組み合わせも文字です。ウィキペディアのページを参照してください。

http://en.wikipedia.org/wiki/Unicode_and_HTML_for_the_Hebrew_alphabet

単語の検索キーは、05dx ~ 05ex の範囲の文字としてのみ保存できます。母音を含む単語に別のフィールドを追加できます。

もちろん、次のことを期待する必要があります。

  • nikud によって異なる意味を持つ単語を考慮する必要があります。
  • あなたは、ありふれている י と ו の「スペルミス」を考慮に入れる必要があります。
于 2012-10-06T20:39:25.817 に答える