voglio mettere a confronto 2 stringhe che hanno qualche carattere non inglese in loroCome confrontare i caratteri non inglesi con accenti
String1 = debarquer
String2 = débárquér
Confrontando sopra 2 stringhe, dovrebbero dire uguali.
voglio mettere a confronto 2 stringhe che hanno qualche carattere non inglese in loroCome confrontare i caratteri non inglesi con accenti
String1 = debarquer
String2 = débárquér
Confrontando sopra 2 stringhe, dovrebbero dire uguali.
//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");
}
Utilizzare la classe Collator. Ti permette di impostare una forza e un locale e confronterà i personaggi in modo appropriato.
Dovrebbe essere qualcosa di simile a questo (NOTA: non ho ancora testato il programma)
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");
}
}
}
UPDATE: Un punto da notare è che "débárquér" e "debarquer" non dovrebbero mai essere considerati come pari. Ma se li stai ordinando, allora non vuoi che vengano confrontati in base al loro valore ASCII. Prendiamo ad esempio "Joao" e "João": se li ordinate in base a ASCII, potresti ottenere Joao, John, João. Questo ovviamente non è buono. L'utilizzo della classe collator lo gestisce correttamente.
Perché inserisci un codice che non hai testato? –
Tendo a confrontare 'String's come quello in spagnolo usando il metodo' equals' e non ci sono problemi. Quale sarebbe la grande differenza? –
C'è un modo per confrontare i valori di 2 stringhe in java.
if(String1.equals(String2))
{
System.out.println("Equal");
}
else
{
System.out.println("Not equal");
}
Per fare questo è possibile utilizzare la classe di Java Normalizer. Basta normalizzare le corde, poi striscia fuori i segni diacritici, in questo modo:
String stripAccents(String string) {
string = Normalizer.normalize(string, Normalizer.Form.NFD);
string = string.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
È quindi possibile utilizzare questo per confrontare le due stringhe meno gli accenti:
stripAccents(string1).equals(stripAccents(string2))
Non preoccupatevi se il vostro 'String 'contiene valori non-ascii in esso. Dovresti confrontarli usando 's1.equals (s2)', assumendo che entrambi siano 'String's e non abbiano valore' null'. –
'if (String1.equals (String2)) {/ * fa qualcosa * /}' –