Ruby - 为什么替换不是迭代?

时间:2014-05-15 08:57:30

标签: ruby while-loop

我不知道为什么在下面的代码中,替换(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>

2 个答案:

答案 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再次非常抱歉凌乱的问题:/