Como encontrar a primeira vogal em uma string

Como encontrar a primeira vogal em uma string

Estou tentando criar uma calculadora latina de porco, mas estou preso em uma determinada parte. Digamos que eu tenha a string “apple”. Para converter isso você simplesmente adicionaria "way" ao final, dando-lhe "appleway". Atualmente tenho essa parte pronta.

O que estou preso é algo como a string "esportes". Para isso você pega as consoantes antes da primeira vogal, coloca-as no final e adiciona "ay" dando "ortsspay".

Estou tendo problemas para descobrir como posso colocar as consoantes antes da primeira vogal para converter a string corretamente.

Responder1

Com bashexpansão de parâmetros:

${var%%[AaEeIiOoUu]*}
  • O padrão [AaEeIiOoUu]*avidamente ( %%) remove a parte correspondente da variável varda direita, aqui começando com qualquer vogal maiúscula ou minúscula ( [AaEeIiOoUu]) seguida por qualquer coisa ( *)

Exemplo:

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

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

Responder2

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

muitos curingas;

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

@Fiximan, não tenho certeza sobre isso;

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

@Sundeep, sim, isso funciona ...

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

Devo dizer que prefiro heemayl's, raw bash +1, legal!

informação relacionada