如何在Ruby中分割一个分隔字符串并将其转换为数组?

243

我有一个字符串

"1,2,3,4"

我想把它转换成一个数组:

[1,2,3,4]

如何做?


11
"1,2|3;42:4711".scan(/\d+/).map {|i| i.to_i }翻译:将字符串"1,2|3;42:4711"中的数字提取出来并转换成整数。 - Jonas Elfström
5个回答

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

29
请记住,如果您使用的是>=1.9版本,您可以直接使用"1,2,3,4".split(',').map(:to_i)。这将把字符串转换为数字数组。 - Alex Fort
7
如果您正在使用Active Support,您可以执行以下操作:map(&:to_i) - jonnii

31

"1,2,3,4".split(",") 作为字符串

"1,2,3,4".split(",").map { |s| s.to_i } 转换为整数


19

对于没有空格的 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"]

对于没有空格的字符串整数,将其作为整数处理

arr = "12345"

arr.split('').map(&:to_i)

output: [1,2,3,4,5]

字符串相关

arr = "abc"

arr.split('')

output: ["a","b","c"]

解释:

  1. arr -> 你想执行任何操作的字符串。
  2. split() -> 是一个方法,它将输入拆分并存储为数组。
  3. ''' '',' -> 是一个值,需要从给定的字符串中移除。

2
最简单的将带有逗号分隔符的字符串转换的方法就是使用split方法。
"1,2,3,4".split(',') # "1", "2", "3", "4"]

您可以在Ruby文档中找到更多有关如何使用split方法的信息。

根据分隔符将str分成子字符串,并返回这些子字符串的数组。

如果模式是一个字符串,则在拆分str时使用其内容作为分隔符。如果模式是一个单独的空格,则在拆分str时,将忽略前导空格和连续的空格字符。

如果模式是一个正则表达式,则在模式匹配的位置将str分割。每当模式匹配一个零长度字符串时,str就会被分割成单个字符。如果模式包含组,则相应的匹配也将在数组中返回。

如果省略了模式,则使用$;的值。如果$;为nil(默认值),则会像指定“ ”一样在空格上拆分str。

如果省略了limit参数,则会抑制尾随空字段。如果limit是正数,则最多返回该数量的字段(如果limit为1,则整个字符串作为数组中唯一的条目返回)。如果为负数,则没有限制返回的字段数量,并且不会抑制尾随空字段。


2
"12345".each_char.map(&:to_i)

each_char的作用基本上和split('')一样:它将字符串分割为其字符数组。

嗯,我现在才意识到,在原来的问题中字符串包含逗号,所以我的答案并不是很有帮助;-(..


3
你能修改你的回答以解释你正在做什么吗? - MZaragoza
对我来说,这真的很有帮助,因为我正需要一个替代 "".split('') 的更具 Ruby 风格 的东西。 - alexventuraio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接