En la API de Java por defecto tiene:
String.CASE_INSENSITIVE_ORDER
Así que no es necesario volver a escribir un comparador si tuviera que utilizar cuerdas con estructuras de datos ordenados.
String s = "some text here";
s.equalsIgnoreCase("Some text here");
Es lo que quiere para controles de igualdad puros en su propio código.
Solo para obtener más información acerca de cualquier cosa relacionada con la igualdad de cadenas en Java. La función de hashCode() de la clase java.lang.String "entre mayúsculas y minúsculas":
public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value;
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}
Así que si usted desea utilizar una tabla hash/HashMap con cadenas como claves, y tienen teclas como "SomeKey", " SOMEKEY "y" somekey "se consideran iguales, luego deberá envolver su cadena en otra clase (no puede extender String ya que es una clase final).Por ejemplo:
private static class HashWrap {
private final String value;
private final int hash;
public String get() {
return value;
}
private HashWrap(String value) {
this.value = value;
String lc = value.toLowerCase();
this.hash = lc.hashCode();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o instanceof HashWrap) {
HashWrap that = (HashWrap) o;
return value.equalsIgnoreCase(that.value);
} else {
return false;
}
}
@Override
public int hashCode() {
return this.hash;
}
}
y luego usarlo como tal:
HashMap<HashWrap, Object> map = new HashMap<HashWrap, Object>();
Si usted sabe que es sensible a mayúsculas, podría convertir tanto a mayúsculas o minúsculas antes de comparar. – fastcodejava
si usa 's1.equalsIgnoreCase (s2)' es posible que no lo haga donde sea que deba hacerse. Sugiero que encuentre de dónde proviene la cadena, un archivo o base de datos o la entrada del usuario, y conviértalo en mayúscula (o minúscula) y continúe usando .equals para la comparación. – H2ONaCl
No convierta a mayúsculas/minúsculas (según lo sugerido por los comentarios anteriores), utilice el enfoque aceptado 'equalsIgnoreCase'. Lea sobre el problema turco I y problemas Unicode similares para la justificación. –