Я хочу сравнить 2 строки, которые имеют в них некоторый неанглийский символ
String1 = debarquer
String2 = débárquér
При сравнении выше 2 строк они должны сказать, что они равны.
Я хочу сравнить 2 строки, которые имеют в них некоторый неанглийский символ
String1 = debarquer
String2 = débárquér
При сравнении выше 2 строк они должны сказать, что они равны.
Используйте класс 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 обрабатывает это правильно.
Для этого вы можете использовать класс Java Normalizer. Просто нормализуйте строки, а затем разделите диакритические знаки, например:
String stripAccents(String string) {
string = Normalizer.normalize(string, Normalizer.Form.NFD);
string = string.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
Затем вы можете использовать это для сравнения двух строк минус акценты:
stripAccents(string1).equals(stripAccents(string2))
//add null check for string1
if(string1.equals(string2)){
//print/return equals
} else{
//print/return not equal
}
if (string1 != null){
if (string1.equals(string2)){
System.out.println("Equal");
}
else{
System.out.println("Not Equal");
}
Есть способ сравнить 2 значения строк в java.
if(String1.equals(String2))
{
System.out.println("Equal");
}
else
{
System.out.println("Not equal");
}