Introducción

Este es otro ejercicio de codewars que estuve a punto de resolver correctamente, aunque al final utilicé unos métodos no recomendados para el ejercicio, pero funcionaron.

El problema era el siguiente:

Dada una cadena aleatoria, partirla en diferentes filas cada que se encontrara cualquier vocal. Por ejemplo, veamos esta cadena:

ah7ki3eumgpa72mdpwe8od

Si la partimos o hacemos un split en cada vocal, sin incluir las vocales, tendríamos un resultado así:

h7k
3
mgp
72mdpw
8
d

Pues exactamente eso se tenía que hacer usando una consulta.

Paso 1: Separar usando expresión regular

En el mismo ejercicio nos aconsejan, aunque no es obligatorio, usar expresiones regulares. En PostgreSQL existe una función que, con un valor y una expresión regular devuelve un arreglo en donde cada valor corresponde a la porción separada: REGEX_SPLIT_TO_ARRAY

La forma de usarla fue la siguiente:

SELECT REGEXP_SPLIT_TO_ARRAY(cadena_aleatoria) AS resultados FROM tabla;

Y devolvía algo así (un arreglo):

{h7k,3,mgp,72mdpw,8,d}

Pero esas no eran filas, eran una sola fila con un arreglo. Entonces busqué la forma de convertir ese arreglo en filas.

Por cierto, la expresión regular es [aeiou], lo que significa que coincidirá cada que encuentre cualquier valor de los que están en el conjunto.

Paso 2: convertir arreglo en filas

Para ello utilicé la función UNNEST, que expande los elementos de un arreglo a filas. Por lo que si el arreglo era {h7k,3,mgp,72mdpw,8,d}, al llamar a esta función se convertía en:

h7k
3
mgp
72mdpw
8
d

La consulta quedó así al final:

SELECT UNNEST(REGEXP_SPLIT_TO_ARRAY(cadena_aleatoria, '[aeiou]')) 
AS resultados 
FROM tabla;

Solución con buenas prácticas

Después de haber mandado esa solución que ya he expuesto, vi la que implementaba las mejores prácticas. Y era casi una combinación de ambas funciones: REGEXP_SPLIT_TO_TABLE

Como su nombre lo dice, separa en filas de acuerdo a una expresión regular.

Conclusión

Siempre se aprenden cosas nuevas, y qué mejor que en codewars, en donde miles de expertos y no tan expertos califican y comparten las soluciones de las pruebas.

Por cierto, el ejercicio o kata es este.


Estoy disponible para trabajar en tu proyecto o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.
Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 4,213 suscriptores


parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

0 Comentarios

Deja un comentario

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada.

A %d blogueros les gusta esto: