我正在匹配一个模式,我需要拆分并将其推入一个数组。
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
而不是将完整的字符串推入数组。我想把它推到三个不同的元素
答案 0 :(得分:2)
您需要使用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
。