如何在 Ruby 中拆分分隔字符串并将其转换为数组?
Posted
技术标签:
【中文标题】如何在 Ruby 中拆分分隔字符串并将其转换为数组?【英文标题】:How to split a delimited string in Ruby and convert it to an array? 【发布时间】:2010-11-01 19:47:10 【问题描述】:我有一个字符串
"1,2,3,4"
我想把它转换成一个数组:
[1,2,3,4]
怎么做?
【问题讨论】:
"1,2|3;42:4711".scan(/\d+/).map |i| i.to_i 【参考方案1】:"1,2,3,4".split(",")
作为字符串
"1,2,3,4".split(",").map |s| s.to_i
作为整数
【讨论】:
【参考方案2】:>> "1,2,3,4".split(",")
=> ["1", "2", "3", "4"]
或者对于整数:
>> "1,2,3,4".split(",").map |s| s.to_i
=> [1, 2, 3, 4]
或者对于更高版本的 ruby(>= 1.9 - 正如 Alex 指出的那样):
>> "1,2,3,4".split(",").map(&:to_i)
=> [1, 2, 3, 4]
【讨论】:
记住,如果你使用 >=1.9,你可以只使用 "1,2,3,4".split(',').map(:to_i) 如果你正在使用主动支持,你可以这样做:map(&:to_i)【参考方案3】:对于String Integer
没有空格作为String
arr = "12345"
arr.split('')
output: ["1","2","3","4","5"]
对于String Integer
,空格为String
arr = "1 2 3 4 5"
arr.split(' ')
output: ["1","2","3","4","5"]
对于String Integer
没有空格作为Integer
arr = "12345"
arr.split('').map(&:to_i)
output: [1,2,3,4,5]
对于字符串
arr = "abc"
arr.split('')
output: ["a","b","c"]
说明:
arr
-> 你要执行任何操作的字符串。
split()
-> 是一种方法,它将输入拆分并存储为数组。
''
or ' '
or ','
-> 是一个值,需要从给定的字符串中删除。
【讨论】:
【参考方案4】:"12345".each_char.map(&:to_i)
each_char
与split('')
基本相同:它将一个字符串拆分为一个字符数组。
嗯,我现在才意识到,在原始问题中,字符串包含逗号,所以我的回答并没有真正的帮助;-(..
【讨论】:
你能编辑你的答案来解释你在做什么吗? 至少对我来说,它真的很有帮助,因为我正在寻找一个替代"".split('')
的替代品,使其更适合 rubyist【参考方案5】:
转换具有逗号等分隔符的字符串的最简单方法就是使用拆分方法
"1,2,3,4".split(',') # "1", "2", "3", "4"]
您可以在ruby docs 中找到有关如何使用拆分方法的更多信息
根据分隔符将str分成子串,返回一个数组 这些子字符串。
如果pattern是一个String,那么它的内容被用作分隔符 拆分 str 时。如果 pattern 是单个空格,则 str 被拆分 空白,带有前导空白和连续空白 字符被忽略。
如果pattern 是一个正则表达式,str 在匹配的地方被分割。 每当模式匹配一个长度为零的字符串时, str 被拆分为 个别字符。如果模式包含组,则相应的 匹配项也会在数组中返回。
如果省略了pattern,则$的值;用来。如果 $;为零(即 默认值),str 在空格上拆分,就像指定了 `'。
如果省略限制参数,则尾随空字段 压制。如果limit是一个正数,至多那个数 将返回字段(如果限制为 1,则返回整个字符串 作为数组中的唯一条目)。如果为负数,则没有限制 返回的字段数,并且尾随空字段不是 被压制了。
【讨论】:
以上是关于如何在 Ruby 中拆分分隔字符串并将其转换为数组?的主要内容,如果未能解决你的问题,请参考以下文章