Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

248
Vistas
Java String split devuelve longitud 0
public int lengthOfLastWord(String s) { s.replaceAll("\\s", ""); String[] splittedS = s.split("\\s+"); if(splittedS.length == 1 && splittedS[0].equals("")) return 0; return splittedS[splittedS.length - 1].length(); }

Lo probé con la cadena " " y devuelve que la longitud de splittedS es 0.

Cuando recorté la cadena, ¿obtuve " " -> "" , así que cuando dividí esto, debería tener una matriz de longitud con el primer elemento siendo "" ?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Las cadenas Java son inmutables, por lo que debe almacenar la referencia a la cadena devuelta después del reemplazo porque se ha devuelto una nueva cadena. Has escrito,

 s.replaceAll("\\s", "");

Pero escribe, s = s.replaceAll("\\s", ""); en lugar de arriba.

Dondequiera que realice operaciones en String, mantenga la nueva referencia moviéndose más.

over 4 years ago · Santiago Trujillo Denunciar

0

La llamada a replaceAll no tiene efecto, pero dado que se divide en \\s+ , el método de split funciona exactamente igual: termina con una matriz vacía.

Recuerde que la split de un argumento es lo mismo que la división de dos argumentos con cero pasado para el segundo parámetro:

 String[] splittedS = s.split("\\s+", 0); // ^^^

Esto significa que el patrón de expresión regular se aplica hasta que no haya más cambios, y luego las cadenas vacías finales se eliminan de la matriz.

Este último punto es lo que hace que su matriz esté vacía: la aplicación del patrón \\s+ produce una matriz [ "" ] , con una sola cadena vacía. Esta cadena se considera final por split , por lo que se elimina del resultado.

Este resultado no va a cambiar incluso si arregla la llamada para replaceAll el camino que sugieren otras respuestas.

over 4 years ago · Santiago Trujillo Denunciar

0

Necesitas reasignar la variable

 s=s.replaceAll(...)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda