我有以下代码:
nonce = data.scan(/nonce="(.*)"/)
data
是一个字符串,匹配的字符串赋值给nonce变量,nonce变量自动变成一个数组。
现在,如果我
puts nonce[0]
我会正确打印我的值:
51d8852d
但如果使用:
puts "final string #{md1}:#{nonce[0]}:#{md2}"
输出将是:
df49f55acfd9d21837fd840644f251b4:["51d8852d"]:3b7718806908d2a4456086be7daba94ccd36ea19fd2bfa80ae41fa8be23433b7
但不应该有任何方括号或双引号,我应该只获取数组的值。 它应该是这样的:
df49f55acfd9d21837fd840644f251b4:51d8852d:3b7718806908d2a4456086be7daba94ccd36ea19fd2bfa80ae41fa8be23433b7
你能建议我如何解决这个问题吗? 谢谢
大卫
最佳答案
当您对捕获组使用扫描时,结果是一个数组数组,因此您要使用 nonce[0][0]
。您感到困惑是因为您的第一个示例将数组 nonce[0]
馈送到 puts
,后者通过打印出每个元素来处理数组。如果你执行 puts nonce[0].class
,你会看到......
关于Ruby 不正确的数组管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4170279/