如何分割一个带分隔符的字符串在Ruby和转换为一个数组?

我有一个字符串

"1,2,3,4"

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

[1,2,3,4]

如何?

341269 次浏览

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

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

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

对于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. ''' '',' ->是一个值,需要从给定的字符串中删除。
"12345".each_char.map(&:to_i)

each_char的作用基本与split('')相同:它将字符串拆分为包含其字符的数组。

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

转换具有逗号等分隔符的字符串的最简单方法就是使用split方法

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

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

根据分隔符将str分成子字符串,返回数组

如果pattern是一个String,那么它的内容将被用作分隔符 如果pattern是单个空格,则对str进行拆分 空白,前导空白和连续空白的运行 人物忽略。< / p >

如果pattern是一个Regexp, str在匹配的地方被分割。 每当模式匹配一个零长度字符串时,str被分割为 单个字符。如果模式包含组,则分别 匹配结果也将在数组中返回

如果省略pattern,则$;使用。如果美元;是nil(是 默认值),STR在空格上被分割,就像指定了' '一样

如果省略了limit参数,后面的空字段是 抑制。如果极限是一个正数,最多是那个数 返回字段(如果limit为1,则返回整个字符串) 作为数组中唯一的条目)。如果是负的,那就没有极限了 返回的字段数,而不返回尾随的空字段 抑制。< / p >