我不知道为什么在下面的代码中,替换(indexRecord)不起作用?
indexRecord = 0
bankFileRecord = 3
#add records
data = File.read("./Model/Bank/Record.xml")
while indexRecord < bankFileRecord do
if indexRecord == 0
replacedRecord = data.gsub(/(Valore=")(.*")/i, "\\1#{indexRecord+1}")
f.puts replacedRecord
indexRecord += 1
else
replacedRecord = replacedRecord.gsub(/(Valore=")(.*")/i, "\\1#{indexRecord+1}")
f.puts replacedRecord
indexRecord += 1
end
end
在所有被替换的元素中,我得到Valore = 0(或其他索引声明数字)。但是当我打印indexRecord进行调试时,值会在打印功能中递增。
我想在每个被替换的行中,值(Valore)增加1。
输出中的电流I我有
<Date_records>
<Date_general>
<first TAG="A" Valore="1/>
<second TAG="B" Valore="1/>
<third TAG="C" Valore="1/>
</Date_general>
</Date_records>
<Date_records>
<Date_general>
<first TAG="A" Valore="1/>
<second TAG="B" Valore="1/>
<third TAG="C" Valore="1/>
</Date_general>
</Date_records>
<Date_records>
<Date_general>
<first TAG="A" Valore="1/>
<second TAG="B" Valore="1/>
<third TAG="C" Valore="1/>
</Date_general>
</Date_records>
输入看起来像这样
<Date_records>
<Date_general>
<first TAG="A" Valore="X"/>
<second TAG="B" Valore="X"/>
<third TAG="C" Valore="X"/>
</Date_general>
</Date_records>
答案 0 :(得分:1)
我已经测试了您发布的代码并且它似乎工作正常,因此您没有向我们展示的部分一定有问题。如果我不得不猜测我会说bankFileRecord
可能是0,那么while循环的主体永远不会被执行?
编辑: 我自己运行你的代码时犯了一个错误,有一个我没看到的小细节。问题在于替换字符串:
replacedRecord = data.gsub(/(Valore=")(.*")/i, "\\1#{indexRecord+1}")
应更改为:
replacedRecord = data.gsub(/(Valore=")(.*")/i, "\\1#{indexRecord+1}\"")
你错过了闭幕词。 (你需要在两个gsubs中更改它)
答案 1 :(得分:0)
缺少&#39; \&#34;&#39;使ELSE正常表达的情况并不多。非常感谢@Doydle再次非常抱歉凌乱的问题:/