2010-11-13 85 views
1

我有以下的代码:红宝石不正确阵列管理

nonce = data.scan(/nonce="(.*)"/) 

data是一个字符串,字符串的匹配片被assigend到随机数变量,自动成为数组。 现在,如果我

puts nonce[0] 

我会得到我的价值正确打印:

51d8852d 

但如果使用方法:

puts "final string #{md1}:#{nonce[0]}:#{md2}" 

输出将是:

df49f55acfd9d21837fd840644f251b4:["51d8852d"]:3b7718806908d2a4456086be7daba94ccd36ea19fd2bfa80ae41fa8be23433b7 

但不应该有任何括号ets或duoble引号,我应该只获取数组的值。 它应该是这样的:

df49f55acfd9d21837fd840644f251b4:51d8852d:3b7718806908d2a4456086be7daba94ccd36ea19fd2bfa80ae41fa8be23433b7 

能否请你建议我该如何解决这个问题呢? 由于

的Dawid

回答

3

当使用与捕获组扫描,结果是数组的数组,所以要使用nonce[0][0]。你很困惑,因为你的第一个例子提供nonce[0],这是一个数组,puts,它通过打印出每个元素来处理数组。如果你做puts nonce[0].class,你会看到...

+0

谢谢,你是对的,那工作:) – Dawid 2010-11-13 01:16:10

+0

或使用nonce.flatten [0]。最终的结果是一样的,所以它确实取决于看起来更好。 – 2010-11-13 02:39:21