读取文件使用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>' ]
]
答
尝试以下操作:
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('|')
。
嗯,我只写了你这将为其工作,代码|以及。 试试看。 – Elitecoder 2009-06-21 21:49:28