2012-10-17 12 views
13

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.

+0

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'. –

+0

'if (String1.equals (String2)) {/ * fa qualcosa * /}' –

risposta

0
//add null check for string1 
if(string1.equals(string2)){ 
    //print/return equals 
} else{ 
    //print/return not equal 
} 
-1
if (string1 != null){ 
if (string1.equals(string2)){ 
System.out.println("Equal"); 
} 
else{ 
System.out.println("Not Equal"); 
} 
22

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.

+0

Perché inserisci un codice che non hai testato? –

+0

Tendo a confrontare 'String's come quello in spagnolo usando il metodo' equals' e non ci sono problemi. Quale sarebbe la grande differenza? –

-3

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"); 
     } 
11

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)) 
Problemi correlati