我有一个字符串
"1,2,3,4"
我想把它转换成一个数组:
[1,2,3,4]
如何?
"1,2,3,4".split(",")作为字符串
"1,2,3,4".split(",")
"1,2,3,4".split(",").map { |s| s.to_i }作为整数
"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"]
arr = "1 2 3 4 5" arr.split(' ') output: ["1","2","3","4","5"]
Integer
arr = "12345" arr.split('').map(&:to_i) output: [1,2,3,4,5]
arr = "abc" arr.split('') output: ["a","b","c"]
解释:
arr
split()
''
' '
','
"12345".each_char.map(&:to_i)
each_char的作用基本与split('')相同:它将字符串拆分为包含其字符的数组。
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 >
根据分隔符将str分成子字符串,返回数组
如果pattern是一个String,那么它的内容将被用作分隔符 如果pattern是单个空格,则对str进行拆分 空白,前导空白和连续空白的运行 人物忽略。< / p >
如果pattern是一个Regexp, str在匹配的地方被分割。 每当模式匹配一个零长度字符串时,str被分割为 单个字符。如果模式包含组,则分别 匹配结果也将在数组中返回
如果省略pattern,则$;使用。如果美元;是nil(是 默认值),STR在空格上被分割,就像指定了' '一样
如果省略了limit参数,后面的空字段是 抑制。如果极限是一个正数,最多是那个数 返回字段(如果limit为1,则返回整个字符串) 作为数组中唯一的条目)。如果是负的,那就没有极限了 返回的字段数,而不返回尾随的空字段 抑制。< / p >