如何将逗号分隔的字符串转换为数组?
Posted
技术标签:
【中文标题】如何将逗号分隔的字符串转换为数组?【英文标题】:How do I convert a comma-separated string into an array? 【发布时间】:2011-06-18 08:44:13 【问题描述】:有没有办法将逗号分隔的字符串转换为 Ruby 中的数组?例如,如果我有这样的字符串:
"one,two,three,four"
如何将它转换成这样的数组?
["one", "two", "three", "four"]
【问题讨论】:
为什么会有“csv”标签?这不适用于.csv
文件,只是一个用逗号分隔的字符串。
CSV 代表逗号分隔值。这就是你的字符串。这是一种以字符串格式存储串行或表格数据的非常标准的方法。它不一定需要直接从文件中读取。
@Lèsemajesté:啊,好吧,我只是认为 CSV 只是文件。谢谢!
【参考方案1】:
使用split
方法来做:
"one,two,three,four".split(',')
# ["one","two","three","four"]
如果您想忽略前导/尾随空格,请使用:
"one , two , three , four".split(/\s*,\s*/)
# ["one", "two", "three", "four"]
如果您想将多行(即 CSV 文件)解析为单独的数组:
require "csv"
CSV.parse("one,two\nthree,four")
# [["one","two"],["three","four"]]
【讨论】:
是否有与 php 的str_getcsv
等效的函数,可以自动处理带引号的 CSV、包含(转义)逗号、多行 CSV 等的值?
@Lèse majesté:是的,看我的回答。
“一、二、三、四”怎么样——有没有快速修剪空间的方法?
@vanboom "one, two, three, four".split(/\s*,\s*/)
。拆分也适用于正则表达式。或者,如果您喜欢这种语法,您可以使用 map
方法:"one, two, three, four".split(',').map(&:strip)
【参考方案2】:
require 'csv'
CSV.parse_line('one,two,three,four') #=> ["one", "two", "three", "four"]
【讨论】:
这将为空元素返回nil
CSV.parse_line("one,two,,four") #=> ["one", "two", nil, "four"]
【参考方案3】:
>> "one,two,three,four".split ","
=> ["one", "two", "three", "four"]
【讨论】:
以上是关于如何将逗号分隔的字符串转换为数组?的主要内容,如果未能解决你的问题,请参考以下文章