如何在Ruby中分割定界字符串并将其转换为数组?


Answers:


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

28
记住,如果您使用> = 1.9,则可以只使用“ 1,2,3,4” .split(',')。map(:to_i)
Alex Fort

7
如果您使用的是主动支持,则可以执行以下操作:map(&:to_i)
jonnii 2009年

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

对于String Integer没有空间的Integer

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. ''' '','->是一个值,需要从给定的字符串中删除它。

1

转换具有定界符(如逗号)的字符串的最简单方法是使用split方法

"1,2,3,4".split(',') # "1", "2", "3", "4"]

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

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

如果pattern是一个String,则在拆分str时将其内容用作定界符。如果pattern是单个空格,则在空白处拆分str,并使用前导空白和连续的空白字符运行。

如果pattern是Regexp,则在模式匹配的地方分割str。只要模式与零长度字符串匹配,str就会被拆分为单个字符。如果pattern包含组,则各自的匹配项也将在数组中返回。

如果省略pattern,则$的值;用来。如果$; 为nil(默认设置),在空白处拆分str,就像指定了'一样。

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


-1
"12345".each_char.map(&:to_i)

each_char基本上与split(''):相同:将字符串拆分为字符数组。

嗯,我现在才意识到,在原始问题中,字符串包含逗号,因此我的回答实际上并没有帮助;-( ..


3
您可以编辑答案以解释自己在做什么吗?
MZaragoza
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.