String name1 = editText1.getText().toString();
String name2 = editText2.getText().toString();
Per confrontare particul ar char
s nella stringa, è possibile utilizzare il metodo char charAt(int)
anche dal tipo String
. Ecco ad esempio l'uso:
if(name1.charAt(2) == name2.charAt(0)){
// Do your stuff
}
Bisogna ricordare che char charAt(int)
è a base zero in modo da 0 è il primo, 1 è secondo e così via. E in questo esempio puoi vedere che ho confrontato due caratteri, proprio come farei per confrontare gli eguer int
, con il semplice ==
.
Confrontando intere String
s:
// This returns true if Strings are equal:
name1.contentEquals(name2);
// This returns 0 if Strings are equal:
name1.compareTo(name2);
per renderlo case insensitive è possibile utilizzare il metodo da String
tipo toLowerCase()
su entrambi i String
s.
name1.equalsIgnoreCase(name2);
o:
name1.toLowerCase().contentEquals(name2.toLowerCase());
fonte
2012-02-04 18:08:51
charAt() è definito in CharSequence e sarebbe meno efficiente convertirli prima in Stringhe - forse non è nemmeno possibile (non esiste alcun vincolo su CharSequence per suggerire che tutti i caratteri in esso contenuti devono essere in grado di adattarsi alla memoria) – Jules
I seconda risposta @Jules Se si intende confrontare CharSequences, è necessario implementare qualcosa sulla falsariga di java.util.Arrays.equals (char [], ch ar []) e conservali come CharSequences e usa charAt dove vedi l'accesso alla matrice. http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Arrays.java#Arrays.equals%28char%5B%5D%2Cchar%5B% 5D% 29 – LINEMAN78