El siguiente código nos muestra diferentes formas y métodos para realizar comparaciones de cadenas.
La primera comparación con el operador (==), se realiza simplemente a nivel de referencia de memoria. El método (equals) permite realizar una comparación carácter a carácter de dos strings. (equalsIgnoreCase) funciona igual que (equals) descartando las diferencias entre mayúsculas y minúsculas. (CompareTo) permite comparar dos cadenas, con la diferencias que si la clase es igual retorna 0, si la primera cadena es mayor retorna la diferencia (un numero positivo), si la cadena es menor retorna también la diferencia (un numero negativo).
Por ultimo se utilizan métodos para realizar comparaciones de pre y pos cadenas, obtener un índice, etc.
public void comparisonEqual () {
String s1 = "Hello Word";
String s2 = "Hello Word";
String s3 = s1;
// Equal examples...
System.out.println((s1 == s2)?s1 + " = " + s3: s1 + " != " + s3);
System.out.println((s1 == s3)?s1 + " = " + s3: s1 + " != " + s3);
s3 = "hello word";
System.out.println((s1.equals(s2))?s1 + " equals " + s2: s1 + " !equals " + s2);
System.out.println((s1.equals(s3))?s1 + " equals " + s3: s1 + " !equals " + s3);
System.out.println((s1.equalsIgnoreCase(s2))?s1 + " equalsIgnoreCase " + s2: s1 + " !equalsIgnoreCase " + s2);
System.out.println((s1.equalsIgnoreCase(s3))?s1 + " equalsIgnoreCase " + s3: s1 + " !equalsIgnoreCase " + s3);
System.out.println(this.customEqual(s1, s2)?s1 + " customEqual " + s2: s1 + " !customEqual " + s2);
System.out.println(this.customEqual(s1, s3)?s1 + " customEqual " + s3: s1 + " !customEqual " + s3);
s1 = s1.toLowerCase();
System.out.println(this.customEqual(s1, s3)?s1 + " customEqual " + s3: s1 + " !customEqual " + s3);
// comparison examples....
System.out.println(s1 + " compareTo " + s3 + ":" + s1.compareTo(s3));
s3 = s3.substring(2);
System.out.println(s1 + " compareTo " + s3 + ":" + s1.compareTo(s3));
System.out.println(s3 + " compareTo " + s1 + ":" + s3.compareTo(s1));
// comparison and finding examples...
System.out.println("s1.startsWith(\"hell\"): " + s1.startsWith("hell"));
System.out.println("s1.toUpperCase().startsWith(\"HELL\"): " + s1.toUpperCase().startsWith("HELL"));
System.out.println("s1.endsWith(\"ord\"): " + s1.endsWith("ord"));
System.out.println("s1.indexOf('o'): " + s1.indexOf('o'));
System.out.println("s1.indexOf('o', s1.indexOf('o')): " + s1.indexOf('o', s1.indexOf('o') + 1));
System.out.println("s1.lastIndexOf('o'): " + s1.lastIndexOf('o'));
System.out.println("s1.contains(\"o w\"): " + s1.contains("o w"));
}
public boolean customEqual (String s1, String s2) {
boolean isequal = s1.length() == s2.length();
if (isequal) {
for (int i = 0; i < s1.length(); i++) {
isequal &= (s1.charAt(i) == s2.charAt(i));
}
}
return isequal;
}
La primera comparación con el operador (==), se realiza simplemente a nivel de referencia de memoria. El método (equals) permite realizar una comparación carácter a carácter de dos strings. (equalsIgnoreCase) funciona igual que (equals) descartando las diferencias entre mayúsculas y minúsculas. (CompareTo) permite comparar dos cadenas, con la diferencias que si la clase es igual retorna 0, si la primera cadena es mayor retorna la diferencia (un numero positivo), si la cadena es menor retorna también la diferencia (un numero negativo).
Por ultimo se utilizan métodos para realizar comparaciones de pre y pos cadenas, obtener un índice, etc.
public void comparisonEqual () {
String s1 = "Hello Word";
String s2 = "Hello Word";
String s3 = s1;
// Equal examples...
System.out.println((s1 == s2)?s1 + " = " + s3: s1 + " != " + s3);
System.out.println((s1 == s3)?s1 + " = " + s3: s1 + " != " + s3);
s3 = "hello word";
System.out.println((s1.equals(s2))?s1 + " equals " + s2: s1 + " !equals " + s2);
System.out.println((s1.equals(s3))?s1 + " equals " + s3: s1 + " !equals " + s3);
System.out.println((s1.equalsIgnoreCase(s2))?s1 + " equalsIgnoreCase " + s2: s1 + " !equalsIgnoreCase " + s2);
System.out.println((s1.equalsIgnoreCase(s3))?s1 + " equalsIgnoreCase " + s3: s1 + " !equalsIgnoreCase " + s3);
System.out.println(this.customEqual(s1, s2)?s1 + " customEqual " + s2: s1 + " !customEqual " + s2);
System.out.println(this.customEqual(s1, s3)?s1 + " customEqual " + s3: s1 + " !customEqual " + s3);
s1 = s1.toLowerCase();
System.out.println(this.customEqual(s1, s3)?s1 + " customEqual " + s3: s1 + " !customEqual " + s3);
// comparison examples....
System.out.println(s1 + " compareTo " + s3 + ":" + s1.compareTo(s3));
s3 = s3.substring(2);
System.out.println(s1 + " compareTo " + s3 + ":" + s1.compareTo(s3));
System.out.println(s3 + " compareTo " + s1 + ":" + s3.compareTo(s1));
// comparison and finding examples...
System.out.println("s1.startsWith(\"hell\"): " + s1.startsWith("hell"));
System.out.println("s1.toUpperCase().startsWith(\"HELL\"): " + s1.toUpperCase().startsWith("HELL"));
System.out.println("s1.endsWith(\"ord\"): " + s1.endsWith("ord"));
System.out.println("s1.indexOf('o'): " + s1.indexOf('o'));
System.out.println("s1.indexOf('o', s1.indexOf('o')): " + s1.indexOf('o', s1.indexOf('o') + 1));
System.out.println("s1.lastIndexOf('o'): " + s1.lastIndexOf('o'));
System.out.println("s1.contains(\"o w\"): " + s1.contains("o w"));
}
public boolean customEqual (String s1, String s2) {
boolean isequal = s1.length() == s2.length();
if (isequal) {
for (int i = 0; i < s1.length(); i++) {
isequal &= (s1.charAt(i) == s2.charAt(i));
}
}
return isequal;
}
Comentarios
rH3uYcBX