Ruby获得句子中最长的单词

use*_*741 7 ruby

我正在尝试创建longest_word一个以句子为参数的方法,该函数将返回句子中最长的单词.

我的代码是:

def longest_word(str)
  words = str.split(' ')
  longest_str = []
  return longest_str.max
end
Run Code Online (Sandbox Code Playgroud)

CDu*_*Dub 14

最简单的方法是使用Enumerable max_by:

def longest(string)
  string.split(" ").max_by(&:length)
end
Run Code Online (Sandbox Code Playgroud)

  • 这可能是最好的答案,恕我直言. (3认同)

tom*_*ave 2

这取决于您想要如何分割字符串。如果您对使用单个空间感到满意,那么这有效:

def longest(source)
  arr = source.split(" ")
  arr.sort! { |a, b| b.length <=> a.length }
  arr[0]
end
Run Code Online (Sandbox Code Playgroud)

否则,请使用正则表达式来捕获空格和标点符号。