如何在 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_charsplit('') 基本相同:它将一个字符串拆分为一个字符数组。

嗯,我现在才意识到,在原始问题中,字符串包含逗号,所以我的回答并没有真正的帮助;-(..

【讨论】:

你能编辑你的答案来解释你在做什么吗? 至少对我来说,它真的很有帮助,因为我正在寻找一个替代 "".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 中拆分分隔字符串并将其转换为数组?的主要内容,如果未能解决你的问题,请参考以下文章

拆分具有多个分隔符的字符串并将其保存到向量中

你如何在 Ruby 中阅读这个三元条件?

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

将字符串拆分为标记并将标记分成两个单独的数组

Ruby 1.9:将字节数组转换为具有多字节 UTF-8 字符的字符串

拆分一个字符串并将其放入两个数组中