Cómo encontrar la primera vocal de una cadena

Cómo encontrar la primera vocal de una cadena

Estoy intentando crear una calculadora latina para cerdos, pero estoy atascado en una parte determinada. Digamos que tengo la cadena "manzana". Para convertir eso, simplemente agregue "way" al final, lo que le dará "appleway". Actualmente tengo esta parte hecha.

En lo que estoy atascado es en algo así como la cadena "deportes". Para esto tomas las consonantes antes de la primera vocal, las pones al final y agregas "ay" dando como resultado "ortsspay".

Tengo problemas para descubrir cómo puedo obtener las consonantes antes de la primera vocal para poder convertir la cadena correctamente.

Respuesta1

Con bashexpansión de parámetros:

${var%%[AaEeIiOoUu]*}
  • El patrón elimina [AaEeIiOoUu]*con avidez ( %%) la porción coincidente de la variable vardesde la derecha, aquí comenzando desde cualquier vocal mayúscula o minúscula ( [AaEeIiOoUu]) seguida de cualquier cosa ( *)

Ejemplo:

$ var=sports   
$ echo "${var%%[AaEeIiOoUu]*}"
sp

$ var=foobar
$ echo "${var%%[AaEeIiOoUu]*}"
f

Respuesta2

$ echo "sports" | sed 's/.*\([a-z]\)[aeiouAEIOU].*/\1/'
p

demasiados comodines;

$ echo "spozzzzzzzzzo" | sed 's/\([a-z]\)[aeiouAEIOU].*/\1/'
sp

@Fiximan, no estoy seguro de eso;

$ echo "spozzzzzzzzzo" | sed 's/\(b-df-hj-np-tv-z\{1,\}\)[aeiou].*/\1/'
spozzzzzzzzzo

@Sundeep, sí, eso funciona...

$ echo "spozzzzzzzzzo" | sed 's/\([^aeiou]*\).*/\1/i'
sp

Debo decir que prefiero heemayl's, raw bash +1, ¡bien!

información relacionada