如何删除Ruby中字符串中的最后一个元音?
如何在字符串中定义-last元音?
例如,我有一个单词“经典”
我想找到“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
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"
就像@aetherus指出的那样:反转字符串,删除第一个元音然后将其反转:
str = "classic" => "classic" str.reverse.sub(/[aeiou]/, "").reverse => "classc"
regex = /[aeiou](?=[^aeiou]*\z)/
-
[aeiou]
匹配一个元音 -
[^aeiou]*
匹配非元音字符0次或更多次 -
\z
匹配字符串的结尾 -
(?=...)
是正向前看,不包括最终结果中的匹配。
这里有一些例子:
"classic".sub(regex, '') #=> "classc" "hello".sub(regex, '') #=> "hell" "crypt".sub(regex, '') #=> "crypt