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

837
Vistas
¿Una forma de eliminar caracteres específicos de una cadena? (kotlin)

Así que tengo un campo de texto donde debe ingresar su texto "codificado" y volver a traducirlo a un idioma no codificado usando .replace para eliminar ciertos caracteres. Pero no puedo hacer que funcione.

Hay un "lenguaje de código" para niños en el que tomas una palabra, como gato, y para cada consonante agregas una "o" y la consonante nuevamente. Así que una "b" sería "bob". Con las vocales simplemente se quedan como están. Cat sería cocatot.

 fun translateBack(view : View) { val konsonanter = "bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ" var input = editText.text.toString() var emptyString = "" for(i in konsonanter) { val find_text = i + "o" + i var conso = i.toString() textView.text = input.replace(find_text, conso, false) } }

Me gustaría que elimine las dos letras siguientes para cada consonante (si es posible). Entonces, si ingreso "cocowow", debería salir "vaca". En este momento solo obtengo lo que ingresé en el campo de texto...

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

0

Use un bucle forEach a través de los caracteres de input y reemplace:

 konsonanter.forEach { input = input.replace("${it}o${it}", "${it}", false) } textView.text = input
over 4 years ago · Santiago Trujillo Denunciar

0

El problema es que está configurando el texto en textView en cada bucle y nunca actualizando input . Básicamente, solo está viendo el resultado de la llamada de replace que ocurre con los "ZoZ" y "Z" al final del ciclo, y input sigue siendo la cadena original.

En su lugar, puede seguir actualizando input y luego configurar el texto cuando haya terminado:

 val konsonanter = "bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ" var input = editText.text.toString() var emptyString = "" for (i in konsonanter) { val find_text = i + "o" + i val conso = i.toString() input = input.replace(find_text, conso, false) } textView.text = input
over 4 years ago · Santiago Trujillo Denunciar

0

Si usa la función de reemplazo con Regex y una función de transformación como parámetros, puede crear una función de extensión realmente concisa y completamente autónoma:

 fun String.translateBack() = with(Regex("([bcdfghjklmnpqrstvwxz])o\\1", RegexOption.IGNORE_CASE)) { replace(this) { "${it.value.first()}" } }

Explicación:

El Regex coincidirá con todas las mismas consonantes (sin importar el caso) alrededor de una "o". Para asegurarse de que la consonante anterior y posterior a la "o" sea la misma, se utilizó una referencia inversa al primer grupo.

Entonces, esto también funcionará para casos como "coCatot".

Uso:

 println("bob".translateBack()) // b println("cocatot".translateBack()) // cat println("coCatot".translateBack()) // cat
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