Ruby不正确的阵列管理
我有以下代码:Ruby不正确的阵列管理,ruby,arrays,Ruby,Arrays,我有以下代码: nonce = data.scan(/nonce="(.*)"/) 数据是一个字符串,匹配的字符串片段被分配到nonce变量,该变量自动成为一个数组。 现在,如果我 puts nonce[0] 我将正确打印我的值: 51d8852d 但如果使用: puts "final string #{md1}:#{nonce[0]}:#{md2}" 输出将是: df49f55acfd9d21837fd840644f251b4:["51d8852d"]:3b7718806908d2a4
nonce = data.scan(/nonce="(.*)"/)
数据
是一个字符串,匹配的字符串片段被分配到nonce变量,该变量自动成为一个数组。
现在,如果我
puts nonce[0]
我将正确打印我的值:
51d8852d
但如果使用:
puts "final string #{md1}:#{nonce[0]}:#{md2}"
输出将是:
df49f55acfd9d21837fd840644f251b4:["51d8852d"]:3b7718806908d2a4456086be7daba94ccd36ea19fd2bfa80ae41fa8be23433b7
但不应该有任何括号或双引号,我应该只得到数组的值。
应该是这样的:
df49f55acfd9d21837fd840644f251b4:51d8852d:3b7718806908d2a4456086be7daba94ccd36ea19fd2bfa80ae41fa8be23433b7
你能建议我如何解决这个问题吗?
谢谢
Dawid当您对捕获组使用扫描时,结果是一个数组数组,因此您希望使用
nonce[0][0]
。您之所以感到困惑,是因为第一个示例将nonce[0]
作为数组馈送到put
,后者通过打印出每个元素来处理数组。如果执行放置nonce[0].class
,您将看到…或使用nonce.flatte[0]。最终结果是一样的,所以这实际上取决于什么看起来更好。