Как удалить последний гласный в строке в Ruby?
Как я могу определить последний гласный в строке?
Например, у меня есть слово "классический"
Я хочу найти, что последним гласным слова "classsi 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
3 ответа
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