You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby如何对数组进行排序?字符串拆分入数组后排序失效问题

问题根因

String#split(",")执行后本身就会返回拆分完成的一维数组,你用Array#push把这个整个数组作为单个元素存入空数组Persoane后,Persoane实际变成了二维嵌套数组,结构为[["Andrei", "Codrin", "Bradea"]],而非你预期的一维名字数组。
此时调用sort只会对外层数组的元素排序——而外层数组只有1个内嵌数组元素,排序前后完全没有变化,最终输出自然就是原输入顺序的名字,不会按字母排序。
另外gets方法会读取输入末尾的回车换行符,不加处理的话最后一个名字会携带隐藏的换行字符,可能干扰排序结果。

修复代码

两种写法任选其一即可:

  • 直接赋值拆分结果(最简洁)
Persoane = []
Nume = gets.chomp # chomp用于去掉输入末尾的换行符
Persoane = Nume.split(",")
puts Persoane.sort
  • 保留追加元素的逻辑:把push换成concat(逐个追加数组元素,而非塞入整个数组),或者用push配合数组展开符
Persoane = []
Nume = gets.chomp
# 二选一即可
Persoane.concat Nume.split(",")
# Persoane.push *Nume.split(",")
puts Persoane.sort
修复后运行效果

输入Andrei,Codrin,Bradea时,输出为正确排序结果:

Andrei
Bradea
Codrin

内容的提问来源于stack exchange,提问作者yonx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 21:45:47