我有一个很长的SGML文件,我需要将其转换为另一种语法,但由于某些原因我的代码不起作用,当我得到输出时它是完全相同的文档,代码如下:
#!usr/bin/env ruby
def replaceStrings(toChange)
##Remove Title tags and replace with the correct
toChange.gsub(/<title>/) { "=====" }
toChange.gsub(/<\/title>/) { "=====" }
##Image
toChange.gsub(/<graphic fileref="/) { "{{" }
toChange.gsub(/<\/graphic>/) { "|}}" }
toChange.gsub(/;" scale="60">/) { "" }
##Paragraphs
toChange.gsub(/<para>/) { "" }
toChange.gsub(/<\/para>/) { "" }
puts toChange
end
fileInput = ARGV[0]
fileOutput = ARGV[1]
document = File.readlines(fileInput)
puts fileInput
puts fileOutput
document.each { |e| replaceStrings(e)}
File.new(fileOutput, 'w')
File.open(fileOutput, 'w'){
|f| f.write(document)
}
据我所知,我确实调用了replaceString方法,但是我错过了什么或做错了什么?
注意:我是Ruby的新手
答案 0 :(得分:1)
您想使用gsub!
此外,无需使用块形式:
toChange.gsub!(/<title>/, "=====")
另外,我认为你不需要File new:
File.open(fileOutput, 'w') do |f|
f.write(document)
end