1

文字列から 3 つの最長の単語を取得できるようにしたい。配列などに入らずにこれを行うきちんとした方法はありますか?

4

3 に答える 3

9
>> str = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
    quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.'
>> str.split.map { |s| s.gsub(/\W/, '') }.sort_by(&:length)[-3..-1]
=> ["adipisicing", "consectetur", "exercitation"]
于 2012-05-07T13:07:42.743 に答える
1

Ruby 2.2 以降、 Enumerable max_bymin_bymaxおよびminはオプションの引数を取り、返される要素の数を指定できるようになりました。

str.scan(/[[:alnum:]]+/).max_by(3, &:size) 
# => ["exercitation", "consectetur", "adipisicing"]
于 2015-05-11T13:49:28.660 に答える