Como encontrar a primeira vogal em uma string

2

Estou tentando criar uma calculadora latina de porco, mas estou presa em uma determinada parte. Digamos que eu tenha a string "apple". Para converter isso você simplesmente adicionaria "way" ao final dando a você "appleway". Eu atualmente tenho essa parte feita.

O que eu 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-lhe "ortsspay".

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

    
por Coder404 25.10.2016 / 02:53

2 respostas

4

Com a expansão do parâmetro bash :

${var%%[AaEeIiOoUu]*}
  • O padrão [AaEeIiOoUu]* greedily ( %% ) remove a parte correspondente da variável var da direita, começando aqui de 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
    
por 25.10.2016 / 03:00
2
$ echo "sports" | sed 's/.*\([a-z]\)[aeiouAEIOU].*//'
p

um curinga demais;

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

@Fiximan, não tenho certeza sobre isso;

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

@Sundeep, sim, isso funciona ...

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

Devo dizer que eu prefiro o heemayl, bash + 1, legal!

    
por 25.10.2016 / 02:59