如何将字符串推入数组

How to push a string into array

我正在匹配一个模式,我需要将它拆分并推入一个数组。

a = Array.new
doc = "<span>Hi welcome to world</span>"
len = doc.length
puts doc.scan(/o/)
a << doc.scan(/o/)
puts a.length

以上代码的输出是

o
o
o
1

数组长度为1

我希望数组的长度为3

而不是将完整的字符串推入数组。我想把它作为三个不同的元素推送

您需要使用Array#concat方法。

a = Array.new
doc = "<span>Hi welcome to world</span>"
len = doc.length
puts doc.scan(/o/)
a.concat doc.scan(/o/)
puts a.length # => 3

doc.scan(/o/) 给你 ['o', 'o', 'o']a << doc.scan(/o/) 给你 [['o', 'o', 'o']],而不是 ['o', 'o', 'o']。这就是为什么您将 a 的大小设为 1.

你想达到的效果可以用Array#concat来实现。因为 a.concat doc.scan(/o/) 会给你 ['o', 'o', 'o'],因此 a 的大小现在是 3.

但你可以写成:

doc = "<span>Hi welcome to world</span>"
len = doc.length
puts doc.scan(/o/)
a = doc.scan(/o/)
puts a.length # => 3

看你这个迷你代码a = Array.new不需要。