SGML替换标签并在Ruby中写入新的和不同的文件

时间:2012-07-15 12:39:10

标签: ruby sgml

我有一个很长的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的新手

1 个答案:

答案 0 :(得分:1)

您想使用gsub!

此外,无需使用块形式:

toChange.gsub!(/<title>/, "=====")

另外,我认为你不需要File new:

File.open(fileOutput, 'w') do |f|
  f.write(document)
end