【问题标题】:How to sort the strings within an array in Ruby如何在Ruby中对数组中的字符串进行排序
【发布时间】:2014-10-31 01:52:03
【问题描述】:

我只是想按字母顺序对字符串进行排序,但同时保持它们在数组中的位置。例如,我有:

myArray = ["tree", "house", "show", "merit", "timer"]

我想对其执行每个循环以输出:

myArray = ["eert", "ehosu", "hosw", and so on...]

我想做这样的事情:

myArray.each do |x|
    x.chars.sort.join
end

对于一个有效的单个字符串,但我猜“chars”不适用于数组中的多个字符串。或者也许确实如此,但我做得不对。基本上我将如何修改它以获得该输出?

【问题讨论】:

  • 您不是在对字符串进行排序,而是在对字符串中的字母进行排序。

标签: ruby arrays sorting loops


【解决方案1】:

要完成这项工作,您只需在myArray 上调用map,而不是each

map 方法会将每个元素更改为在原始元素上运行块的结果。

myArray = ["tree", "house", "show", "merit", "timer"]
myArray.map do |x|
  x.chars.sort.join
end
# => ["eert", "ehosu", "hosw", "eimrt", "eimrt"]

另外需要提及的是,您使用 camelCase 作为变量,而 Ruby 中的约定是 snake_case(my_array 会更好)。

【讨论】:

  • 非常正确。非常感谢!我知道这不会太复杂。
【解决方案2】:

您正在对数组中的每个元素进行排序。为此,请调用 map 函数。然后我将每个元素分解为多个较小的数组元素,并对该数组进行排序。我使用 join 方法将该数组转换回一个句子。

myArray.map{|x|x.chars.sort{|x,y|x<=>y}.join}

=> ["eert", "ehosu", "hosw", "eimrt", "eimrt"]

【讨论】:

    猜你喜欢
    • 2013-05-14
    • 2014-04-23
    • 1970-01-01
    • 2011-03-11
    • 2012-03-24
    • 1970-01-01
    • 2016-04-16
    • 2012-10-06
    • 1970-01-01
    相关资源
    最近更新 更多