ruby-on-rails - Rails - 将二维数组转换为列表并返回
问题描述
我有一个这样的数组:
[["09:00",4,15],["09:00",4,15]]
我想在这样的文本区域中输出它:
"09:00",4,15
"09:00",4,15
用户可以对其进行编辑,然后我想将其转换回带有子数组的数组。
对于第一步,我可以做一个each
并删除[]
withgsub
但这似乎不是最好的方法。然后把它变成一个数组,我需要更多的代码。
这是一种 CSV 输出,但我没有在这里处理任何文件。
解决方案
为了产生输出,这样的事情可以工作:
input = [["09:00",4,15],["09:00",4,15]]
output = input
.map { |list| list.join(",") }
.join("\n")
puts output
打印:
09:00,4,15
09:00,4,15
然后您可以使用以下命令将其转回输入split
:
result = output
.split("\n")
.map { |line| line.split(",") }
# => [["09:00", "4", "15"], ["09:00", "4", "15"]]
正如您可能注意到的那样,问题在于数字被转换为字符串。这是因为当你在页面上打印一些东西时,你不可避免地会将它变成一个字符串,而 Ruby 不能只知道它应该是一个数字。
如果需要,您可以将第二个和第三个元素转换为数字:
result2 = result.map do |(time, num1, num2)|
[time, num1.to_i, num2.to_i]
end
推荐阅读
- drop-down-menu - antd:嵌套选择/下拉
- reactjs - 在 react.js、cookie、localstorage 或任何其他中存储大数据的最佳方式是什么?
- reactjs - 状态挂钩不会从 useEffect 函数调用中更新
- visual-studio-code - 为什么 VS Code 的 yaml 扩展将 period 归类为浮点数?
- angular - Angular 8 - ngFor中的模型不更新
- html - Bootstrap CSS按钮问题,不改变颜色
- azure - 在 Azure AD B2C 中取消新用户注册重定向到站点主页,产生“AuthorizationFailed”错误
- javascript - 如何发送消息并嵌入到一条消息中
- python-3.x - 放大图像的上边距,保持背景颜色相同 python
- robolectric - UiDevice.getUiAutomation(instrumentation) 在 Robolectric 测试中返回导致 NPE 的 null