比较字符串时忽略希伯来语元音(ignoring hebrew vowels when compari

2019-09-23 15:17发布

晚上好,我希望你能帮助我解决这个问题,因为我在努力寻找解决方案。

我有话,谁给我vowelled希伯来语单词,例如提供商 -

Vowelled - 字节不是Vowelled - 首页

Vowelled - Hbith不Vowelled - 家

不像我提供,我的用户无法正常进入希伯来元音(也不是我应该希望他这样做)。 用户故事是寻求在提供的字一个字的用户。 问题是vowelled和未vowelled词之间的比较。 由于每个由在存储器中的不同的字节阵列表示,equals方法返回false。

我试图寻找到UTF-8如何处理希伯来语元音和它看起来像它只是普通字符。

我想现在的元音给用户,所以我要保持字符串,是在内存中,但我比较想忽略他们的时候。 有没有办法解决这个问题没有简单的方法?

Answer 1:

您可以使用分页器 。 我不能告诉你它是如何工作的准确,因为它是新的给我,但是这似乎这样的伎俩:

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


Answer 2:

据我所知没有。 元音字符。 即使是字母和一些圆点组合字符。 参见维基百科页面。

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

你可以存储你的话,因为只有在05dx-05ex字符范围内的搜索键。 您可以添加其他字段与元音的单词。

当然,你应该期待以下几点:

  • 你应该需要考虑有根据nikkud不同含义的词语。
  • 你应该考虑到י和ו的帐户“mispellings”,这是家常便饭。


文章来源: ignoring hebrew vowels when comparing strings