Quiero usar el string.startsWith()método pero ignorando el caso.
Supongamos que tengo String"Sesión" y uso startsWithen "sEsSi", entonces debería regresar true.
¿Cómo puedo conseguir esto?
Quiero usar el string.startsWith()método pero ignorando el caso.
Supongamos que tengo String"Sesión" y uso startsWithen "sEsSi", entonces debería regresar true.
¿Cómo puedo conseguir esto?
Respuestas:
Utilice toUpperCase()o toLowerCase()para estandarizar su cadena antes de probarla.
String.equalsIgnoreCase()usted descubrirá que es necesario comparar ambos versión en minúsculas y mayúsculas de las cuerdas antes de que pueda volver concluyente false. Consulte stackoverflow.com/a/38947571/14731 para obtener una respuesta alternativa.
"İstanbul".toLowerCase().startsWith("istanbul".toLowerCase())(en un entorno Locale.Turkish), me dará falso.
Una opción es convertir ambos a minúsculas o mayúsculas:
"Session".toLowerCase().startsWith("sEsSi".toLowerCase());
Esto está mal. Ver: https://stackoverflow.com/a/15518878/14731
Otra opción es usar el String#regionMatches()método, que toma un argumento booleano que indica si se deben hacer coincidencias sensibles a mayúsculas y minúsculas o no. Puedes usarlo así:
String haystack = "Session";
String needle = "sEsSi";
System.out.println(haystack.regionMatches(true, 0, needle, 0, 5)); // true
Comprueba si la región needledesde el índice 0hasta la longitud 5está presente al haystackcomenzar desde el índice 0hasta la longitud 5o no. El primer argumento es true, significa que hará una coincidencia que no distinga entre mayúsculas y minúsculas.
Y si solo eres un gran fan de Regex , puedes hacer algo como esto:
System.out.println(haystack.matches("(?i)" + Pattern.quote(needle) + ".*"));
(?i) La bandera incrustada es para ignorar la coincidencia de mayúsculas y minúsculas.
System.out.println("Session".toLowerCase().startsWith("sEsSi".toLowerCase()));no es una solución adecuada. Puede probar esto: System.out.println("SessIon".toLowerCase().startsWith("sEsSi".toLowerCase()));con argumentos vm -Duser.country=TR -Duser.language=tr En este ejemplo, Iestá en mayúsculasi
prueba esto,
String session = "Session";
if(session.toLowerCase().startsWith("sEsSi".toLowerCase()))
Sé que llego tarde, pero ¿qué pasa con el uso de StringUtils.startsWithIgnoreCase () de Apache Commons Lang 3?
Ejemplo:
StringUtils.startsWithIgnoreCase(string, "start");
Simplemente agregue la siguiente dependencia a su archivo pom.xml (tomando la hipótesis de que usa Maven):
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
Puedes usar someString.toUpperCase().startsWith(someOtherString.toUpperCase())
el uso comienza con y toLowerCase juntos
Me gusta esto
"Session".toLowerCase().startsWith("sEsSi".toLowerCase());
string.regionMatches(true, 0, prefix, 0, prefix.length());que no incurra en el costo de "normalizar" ambas cadenas.