如何找到字符串中的第一个元音

如何找到字符串中的第一个元音

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

相关内容