Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较字符串时忽略希伯来语元音_Java_Encoding_Hebrew - Fatal编程技术网

Java 比较字符串时忽略希伯来语元音

Java 比较字符串时忽略希伯来语元音,java,encoding,hebrew,Java,Encoding,Hebrew,晚上好,我希望你能帮我解决这个问题,因为我正在努力寻找解决方案 我有一个单词提供者,比如说,他给我发元音的希伯来语单词- 元音-בִַּת不元音-בית 元音的-不元音的-不元音的 与我的提供者不同,我的用户通常不能输入希伯来语元音(我也不希望他这样做)。用户故事是指在提供的单词中寻找单词的用户。问题是元音单词和非元音单词之间的比较。由于每个都由内存中不同的字节数组表示,因此equals方法返回false 我试着研究UTF-8是如何处理希伯来语元音的,它似乎只是普通字符 我确实希望将元音呈现给用

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

我有一个单词提供者,比如说,他给我发元音的希伯来语单词-

元音-בִַּת不元音-בית

元音的-不元音的-不元音的

与我的提供者不同,我的用户通常不能输入希伯来语元音(我也不希望他这样做)。用户故事是指在提供的单词中寻找单词的用户。问题是元音单词和非元音单词之间的比较。由于每个都由内存中不同的字节数组表示,因此equals方法返回false

我试着研究UTF-8是如何处理希伯来语元音的,它似乎只是普通字符

我确实希望将元音呈现给用户,因此我希望保持字符串在内存中的原样,但在比较时,我希望忽略它们。有什么简单的方法可以解决这个问题吗?

您可以使用。我不能告诉你它到底是如何工作的,因为它对我来说是新的,但这似乎起到了作用:

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
恐怕没有。 元音是字符。甚至一些字母和点的组合也是字符。请参阅维基百科页面

只能将单词的搜索关键字存储为05dx-05ex范围内的字符。您可以为带有元音的单词添加另一个字段

当然,您应该期待以下内容:

  • 根据nikkud的说法,你需要解释有不同意思的单词
  • 你应该考虑到י和ו的“拼写错误”,这是很常见的
这可能有助于提供一些关于希伯来语元音主题的额外背景知识(许多读者可能不熟悉这个主题)。您是否可以维护一个您希望被视为平等的字符对列表?如果是这样,问题就简化为实现一个自定义字符串比较方法,该方法考虑了这些等效字符。我将创建一个从字符串中去除元音的函数,然后在将字符串与String.equals进行比较之前使用该函数。(这可能是通过String.replace和所有希伯来语元音的字符数组实现的)您发现缺少哪些信息?我不想再次实现字符串的等号,也不想保留所有元音的映射,我宁愿从外部库中读取…谢谢,它没有解决我的问题,因为我不想到处使用collator,但从这里继续很容易。再次感谢:)好吧,谢谢你的回答,但是@chooban已经给出了我需要的解决方案。关于你的两个用户故事,我知道第一个,但对于第二个,这与拼写错误一样,你熟悉拼写检查的简单解决方案吗?