2016-09-22 4 views
2

Как я могу определить гласную-stow в строке?Как удалить последний гласный в строке в Ruby?

К примеру, у меня есть слово «классический»

Я хочу, чтобы найти, что последний гласный слова «classs я с» это буква «я», и удалить этот последний гласный ,

Я имею в виду:

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 
+2

Обратный строку, удалить первый гласный, то обратный строку назад. – Aetherus

+0

Возможно, вы захотите изменить свое первое предложение, чтобы удалить ссылку на Java. – pjs

+1

Другим способом является 'str =" fabulous "; str [str.rindex (/ [aeiou] /)] = '' => ""; str # => "fabulos" 'или' str.dup.tap {| s | s [s.rindex (/ [aeiou] /)] = ''} ', если' str' не нужно мутировать. –

ответ

4

Как @aetherus отметил: обратный строку, удалить первую гласную затем повернуть его вспять обратно:

str = "classic" 
=> "classic" 
str.reverse.sub(/[aeiou]/, "").reverse 
=> "classc" 
12
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" 
+0

Это гораздо лучший ответ. Красивый RegEx! – potz

+0

@CarySwoveland: Не могли бы вы предоставить ссылку, где объясняется '\ K'? Я не нашел это в [Ruby Docs for Regexp] (https://ruby-doc.org/core-2.2.3/Regexp.html). – user1934428

+0

@ user1934428 он отсутствует в документации Ruby, но http://www.regular-expressions.info/keep.html объясняет это. – Stefan

1
regex = /[aeiou](?=[^aeiou]*\z)/ 
  • [aeiou] соответствует одному глазу

  • [^aeiou]* матчи без гласного символов 0 или более раза

  • \z спички до конца строки

  • (?=...) положительно прогнозный и не включая матч в конечном итоге.

Вот несколько примеров:

"classic".sub(regex, '') #=> "classc" 
    "hello".sub(regex, '') #=> "hell" 
    "crypt".sub(regex, '') #=> "crypt 

 Смежные вопросы

  • Нет связанных вопросов^_^