Подтвердить что ты не робот

Как сравнить неанглийские символы с акцентами

Я хочу сравнить 2 строки, которые имеют в них некоторый неанглийский символ

String1 = debarquer
String2 = débárquér

При сравнении выше 2 строк они должны сказать, что они равны.

4b9b3361

Ответ 1

Используйте класс Collator. Он позволяет установить силу и локаль, и он будет соответствующим образом сравнивать символы.

Это должно быть что-то похожее на это (ПРИМЕЧАНИЕ: я не тестировал программу)

import java.text.Collator;
import java.util.Locale;

public class CollatorExp {

    public static void main(String[] args) {
        Collator collator = Collator.getInstance(Locale.FRENCH);
        collator.setStrength(Collator.PRIMARY);

        if (collator.compare("débárquér", "debarquer") == 0) {
            System.out.println("Both Strings are equal");
        } else {
            System.out.println("Both Strings are not equal");
        }
    } 
}

ОБНОВЛЕНИЕ: Следует отметить, что "débárquér" и "debarquer" никогда не должны считаться равными. Но если вы будете их сортировать, то вы не хотите, чтобы их сравнивали по их значению ASCII. Возьмем, к примеру, "Жоао" и "Жоао": если вы разобрали их на основе ASCII, вы можете получить Жоао, Джона, Жоао. Это, очевидно, не очень хорошо. Использование класса collator обрабатывает это правильно.

Ответ 2

Для этого вы можете использовать класс Java Normalizer. Просто нормализуйте строки, а затем разделите диакритические знаки, например:

String stripAccents(String string) {
    string = Normalizer.normalize(string, Normalizer.Form.NFD);
    string = string.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}

Затем вы можете использовать это для сравнения двух строк минус акценты:

stripAccents(string1).equals(stripAccents(string2))

Ответ 3

//add null check for string1
if(string1.equals(string2)){
  //print/return equals
} else{
  //print/return not equal
}

Ответ 4

if (string1 != null){
if (string1.equals(string2)){
System.out.println("Equal");
}
else{
System.out.println("Not Equal");
}

Ответ 5

Есть способ сравнить 2 значения строк в java.

        if(String1.equals(String2))
        {
           System.out.println("Equal");
        }
        else
        {
           System.out.println("Not equal");
        }