读取文件使用Ruby

问题描述:

我有一个包含正则表达式的列表,我经常使用根据干净的HTML文件的文本文件:读取文件使用Ruby

LIST.TXT

<p[^>]*>|<p> 
<\/?(font|span)[^>]*>| 
<\/u>\s*<u>| 
<\/u>\s*<i>\s*<u>|<i> 

如果每行包括了形式“#{一} |#{b}”,这将是对读取和该文件转换为阵列的最简单的方法:

[ 
    [ /<p[^>]*>/, '<p>' ], 
    [ /<\/?(font|span)[^>]*>/, '' ], 
    [ /<\/u>\s*<u>/, '' ], 
    [ /<\/u>\s*<i>\s*<u>/, '<i>' ] 
] 
+0

嗯,我只写了你这将为其工作,代码|以及。 试试看。 – Elitecoder 2009-06-21 21:49:28

尝试以下操作:

result = File.foreach("list.txt").collect do |line| 
    *search, replace = line.strip.split("|", -1) 
    [Regexp.new(search.join("|")), replace] 
end 

或者,如果你的分隔符不会在正则表达式和替换发生:

result = File.foreach("list.txt").collect do |line| 
    search, replace = line.strip.split("!", -1) 
    [Regexp.new(search), replace] 
end 

假设#{b}部分永远不会包含一个|,我得到如下:

File.open(filename,"r").collect 
    { |s| 
    x = s.rindex('|'); 
    [ Regexp.new(s[0..x]), s[x+1..-1].chop ] 
    } 

否则,你可能有更复杂的东西来代替s.rindex('|')