我正在使用Ruby,我想从XML文件中删除所有\
个字符。
这是我的XML文件:
<w:numId w:val=\"2\"/></w:numPr></w:pPr><w:bookmarkStart w:id=\"0\" w:name=\"__DdeLink__0_226207805\"/><w:bookmarkEnd w:id=\"0\"/><w:r><w:rPr></w:rPr><w:t>Serve high quality food</w:t></w:r></w:p>, <w:p><w:pPr><w:pStyle w:val=\"style17\"/><w:numPr><w:ilvl w:val=\"0\"/><w:numId w:val=\"2\"/></w:numPr></w:pPr><w:bookmarkStart w:id=\"0\" w:name=\"__DdeLink__0_226207805\"/><w:bookmarkEnd w:id=\"0\"/>
答案 0 :(得分:1)
您的文件中实际上没有反斜杠字符(\
)。示例中的反斜杠只是转义了下面的双引号并阻止它终止字符串,从而导致由于未终止的双引号而导致语法错误。
在IRB中打印该字符串时所看到的实际上并不是反斜杠,而是反斜杠与以下双引号组合作为双引号被转义的指示。当你第一次遇到它时,这个想法很难掌握。看看&#34; Escape sequences&#34;。
说它简短而且很甜,你的文件中没有反斜杠,所以你不能删除它。
让我用一个例子来解释:
> text = "This is sample text for escape character\""
#=> "This is sample text for escape character\""
相当于:
> text = 'This is sample text for escape character"'
#=> "This is sample text for escape character\""
要删除反斜杠(\
),只需删除"
> text.tr!('"', '')
#=> "This is sample text for escape character"
我希望这说清楚。
答案 1 :(得分:0)
谢谢你们的答案,这就是我所说的,它按照我的意愿运作:
text = ''
File.open("#{temp_dir}/plan_report_template/word/document.xml").each { |line|
text << line
}
open("#{temp_dir}/plan_report_template/word/document.xml", "w") { |file| file.write(text.gsub('\"', '"')) }