文字列の最初の母音を見つける方法

文字列の最初の母音を見つける方法

私はピッグラテン語計算機を作成しようとしていますが、ある部分で行き詰まっています。たとえば、「apple」という文字列があるとします。これを変換するには、単に末尾に「way」を追加して「appleway」にします。現在、この部分は完了しています。

私が行き詰まっているのは、「sports」のような文字列です。この場合、最初の母音の前の子音を取り、それを末尾に置き、「ay」を追加して「ortsspay」にします。

文字列を適切に変換するために、最初の母音の前に子音を取得する方法がわかりません。

答え1

bashパラメータ拡張あり:

${var%%[AaEeIiOoUu]*}
  • パターンは[AaEeIiOoUu]*貪欲に(%%)変数から右から一致した部分を削除しますvar。ここでは、大文字または小文字の母音([AaEeIiOoUu])から始まり、その後に任意のもの(*)が続きます。

例:

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

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

答え2

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

ワイルドカードが多すぎます。

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

@Fiximan、それについてはよくわかりません。

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

@Sundeep、はい、それはうまくいきました...

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

私は heemayl のほうが好きだと言わざるを得ません。生のバッシュ +1、いいですね!

関連情報