我正在尝试创建一个猪拉丁计算器,但我卡在了某个部分。假设我有字符串“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's,原始 bash +1,很好!