2012-09-23 33 views
7
String a = "Hello\u200e"; 
String b = "Hello\u200f"; 

System.out.println("a = '" + a + "' and b = '" + b + "' are length " 
        + a.length() + " and " + b.length() 
        + ", equals() is " + a.equals(b)); 

Il codice nel frammento di codice sopra riportato produce il seguente output.Caratteri invisibili in stringhe Java

a = 'Ciao' e b = 'Ciao' sono di lunghezza 6 e 6, equals() è falsa

Anche se il valore di entrambi a e b visualizzato sulla console è Hello‏ , a.equals(b) restituisce false. Come?

risposta

9

U+200E e U+200F sono non caratteri stampabili. Sono entrambi i caratteri di controllo che determinano il modo in cui il testo deve essere visualizzato: da sinistra a destra o da destra a sinistra.

Non vedrete questi nel terminale e non dovrebbero essere stringhe equivalenti.

0x200E^0x200F != 0

9

Perché le sequenze di caratteri non sono identiche. Solo perché sembra lo stesso sulla console non significa che gli oggetti siano identici.

Problemi correlati