如何将逗号分隔的字符串转换为数组?

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"]]

【讨论】:

是否有与 phpstr_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"]

【讨论】:

以上是关于如何将逗号分隔的字符串转换为数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数组转换为逗号分隔的单词字符串? [复制]

如何将逗号分隔的字符串转换为列表?

无法将逗号分隔的字符串转换为数组

js 将数组转换为逗号分隔的字符串

将逗号分隔的字符串转换为数组[重复]

是否有内置方法可以将逗号分隔的字符串转换为数组?