如何返回单词的状语形式

deb*_*deb 5 ruby ruby-on-rails

我想知道是否有在Ruby中的方法把一个字,如monthmonthly.

相近 pluralize(word)

Mar*_*ski 7

我不认为有任何内置方法,但你可以自己写一个简单的方法:

CONSONANTS = [ 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z' ]

def adverbize(word)
  if word[-2,2] == "ly"
     word
  elsif word.length <= 3 and word[-1] == "y"
    word + "ly"
  elsif word[-2,2] == "ll"
     word + "y"
  elsif CONSONANTS.include? word[-3] and word[-2,2] == "le"
     word.sub(/e$/, "y")
  elsif word[-1] == "y"
     word.chop + "ily"
  else
     word + "ly"
  end
end
Run Code Online (Sandbox Code Playgroud)

另一种方法,每次都会工作(这主要是一个玩笑,但如果你愿意,你可以使用它)

def adverbize(word)
    "In a " + word + " fashion."
end
Run Code Online (Sandbox Code Playgroud)

  • @LarsHaugseth:我会努力改进答案:) (2认同)