有没有一种 Ruby 方法可以按单词数对字符串数组进行排序



我有一个 Ruby 字符串数组:

array = ["dog eats", "dog", "cat eats dog"]

我想按字符串中的单词(或标记)数量对这个数组进行排序,降序如下:(3 个单词、2 个单词、1 个单词):

sorted = ["cat eats dog", "dog eats", "dog"]

如何在 Ruby 中执行此操作?我可以想到一种蛮力方法,但想知道是否有一种类似 Ruby 的方法可以在 1 行甚至几行中做到这一点。

数组类提供了一个sort_by方法。只需拆分刺痛并计算组件:

array.sort_by{|x| x.split.count}
您可以使用

Array#sortsplit执行此操作,如下所示:

array = ["dog eats", "dog", "cat eats dog"]
 => ["dog eats", "dog", "cat eats dog"]
array.sort { |a,b| a.split.length <=> b.split.length }
 => ["dog", "dog eats", "cat eats dog"]

按空格分隔的单词数的升序排序。

编辑:根据@MarkReed,要反转,反转排序表达式的顺序:

array.sort { |a,b| b.split.length <=> a.split.length }
 => ["cat eats dog", "dog eats", "dog"]

如果需要,您可以split任何其他分隔符。

相关内容

最新更新