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

475
Vistas
¿Por qué la función split ("") de Kotlin da como resultado una cadena vacía inicial y final?

Soy un desarrollador de Java que probó Kotlin y encontró un caso contrario a la intuición entre estos dos lenguajes.

Considere el código dado en Kotlin:

 "???".split("") # gives ["", "?", "?", "?", ""]

y lo mismo en Java:

 "???".split("") # gives ["?", "?", "?"]

¿Por qué Kotlin produce una cadena de espacios vacíos al principio y al final en la matriz resultante? ¿O Java siempre elimina estas cadenas vacías, y simplemente no estaba al tanto de eso?

Sé que existe el método toCharArray() en cada Kotlin String , pero aún así, no es muy intuitivo (¿tal vez los desarrolladores de Java deberían abandonar los viejos hábitos de Java que esperaban reutilizar en un nuevo idioma?).

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

0

Debe filtrar el primer y el último elemento:

 "???".split("").drop(1).dropLast(1)

Mira este ejemplo:

 "".split("") // [, ]

Divide esta secuencia de caracteres en una lista de cadenas alrededor de las apariciones de los delimitadores especificados.

Consulte https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/split.html

over 4 years ago · Santiago Trujillo Denunciar

0

Esto se debe a que el método Java split(String regex) los elimina explícitamente:

Este método funciona como si invocara el método de división de dos argumentos con la expresión dada y un argumento límite de cero. Por lo tanto, las cadenas vacías finales no se incluyen en la matriz resultante.

split(String regex, int limit) menciona:

Cuando hay una coincidencia de ancho positivo al comienzo de esta cadena, se incluye una subcadena inicial vacía al comienzo de la matriz resultante. Sin embargo, una coincidencia de ancho cero al principio nunca produce una subcadena inicial tan vacía.

"" es una coincidencia de ancho cero. No estoy seguro de por qué considera que toCharArray() no es intuitivo aquí, dividir por una cadena vacía para iterar sobre todos los caracteres es una forma indirecta de hacer las cosas. split() está destinado a la coincidencia de patrones y obtener grupos de cadenas.

PD: Revisé JDK 8, 11 y 17, el comportamiento parece ser consistente desde hace un tiempo.

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