如何返回单词的状语形式

时间:2011-05-04 15:39:29

标签: ruby-on-rails ruby

我想知道Ruby中是否有一个方法可以将month之类的单词转换为monthly

pluralize(word)类似

1 个答案:

答案 0 :(得分: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

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

def adverbize(word)
    "In a " + word + " fashion."
end