如何在字符串中定义-last元音?
例如,我有一个单词“classic”
我想找到“classs i c”这个词的最后一个元音是字母“ i ”,并删除最后一个元音。
我在想:
def vowel(str)
result = ""
new = str.split(" ")
i = new.length - 1
while i < new.length
if new[i] == "aeiou"
new[i].gsub(/aeiou/," ")
elsif new[i] != "aeiou"
i = -= 1
end
end
return result
end
答案 0 :(得分:13)
r = /
.* # match zero or more of any character, greedily
\K # discard everything matched so far
[aeiou] # match a vowel
/x # free-spacing regex definition mode
"wheelie".sub(r,'') #=> "wheeli"
"though".sub(r,'') #=> "thogh"
"why".sub(r,'') #=> "why"
答案 1 :(得分:4)
像@aetherus指出:反转字符串,删除第一个元音然后将其反转:
str = "classic"
=> "classic"
str.reverse.sub(/[aeiou]/, "").reverse
=> "classc"
答案 2 :(得分:1)
regex = /[aeiou](?=[^aeiou]*\z)/
[aeiou]
匹配一个元音
[^aeiou]*
匹配非元音字符0次或以上
\z
匹配字符串的末尾
(?=...)
积极向前看,不包括最终结果中的匹配。
以下是一些例子:
"classic".sub(regex, '') #=> "classc"
"hello".sub(regex, '') #=> "hell"
"crypt".sub(regex, '') #=> "crypt