2014-10-31 79 views
0

我只是想按字母順序排序我的字符串,但同時保持它們在數組中的位置。例如,我有:如何排序在Ruby中的數組中的字符串

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

,我想爲了對其執行每個迴路輸出:

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

我想要做這樣的事情:

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

對於一個工作的字符串,但我猜「字符」不適用於數組中的多個字符串。或者也許它確實存在,我做得不對。基本上我將如何修改它以獲得輸出?

+0

您沒有對字符串進行排序,而是按字符串排序字母。 – sawa 2014-10-31 04:43:13

回答

2

爲了完成這項工作,您只需撥打map即可,而不是each

map方法會將每個元素更改爲在原始元素上運行塊的結果。

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

另一件事提的是,你正在使用駝峯你的變量,而Ruby中約定snake_case(my_array將是可取的)。

+0

非常真實。非常感謝!我知道這不會太複雜。 – user3802738 2014-10-31 02:07:23

0

您正在排序數組中的每個元素。爲此,請調用地圖功能。然後,我將每個元素分解成多個更小的數組元素,並對該數組進行排序。我通過使用連接方法將該數組轉換回句子。

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

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