
我正在嘗試創建一個豬拉丁計算器,但我卡在了某個部分。假設我有字串“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 的,原始 bash +1,很好!