El PO no indicó lo que en el mundo real problema que estaba tratando de resolver. Puede haber otro enfoque que resuelva el problema con éxito.
Me encontré con un problema similar cuando estaba tratando de encontrar coincidencias de una manera independiente del caso.Usé toUpperCase()
para intentar normalizar las cadenas antes de la comparación usando String.indexOf()
, y encontré problemas con este caracter.
No encontré configuraciones regionales en las que toUpperCase()
del carácter ß resultaron en algo más que SS (aunque admití que no probé todas las configuraciones regionales posibles).
Mi solución fue usar String.toLowerCase()
para el juego. En mi conjunto de datos, no hubo incidentes donde hacer eso cambiaría la cantidad de caracteres.
Editar para agregar - Un ejemplo de código (según lo solicitado):
String[] matches = "SS,ss,ß".split(",");
System.out.printf("%12s %5s %5s %5s\n", " ", matches[0], matches[1], matches[2]);
String g = "Großenhain";
for (String g1 : new String[]{g, g.toUpperCase(), g.toLowerCase(), g.toUpperCase().toLowerCase()})
{
System.out.printf("%12s", g1);
for (String match : matches)
System.out.printf(" %5d", g1.indexOf(match));
System.out.println();
}
(I tiró la toUpperCase() toLowerCase() sólo por diversión, no como una posible solución..)
salida:
SS ss ß
Großenhain -1 -1 3
GROSSENHAIN 3 -1 -1
großenhain -1 -1 3
grossenhain -1 3 -1
sí, esto es lo que ocurre incluso después de pasar a la configuración regional. –
Sí ... se dice en los documentos que lo hace por _todas_ lugares –
¿hay alguna manera puedo lograr lo que estoy tratando de hacer? –