2009-06-21 6 views
1

ich eine Textdatei, die eine Liste von regexp des enthält, die ich regelmäßig HTML-Dateien zu reinigen verwenden nach:Lesen einer Datei mit Ruby-

list.txt

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

wenn jede Zeile bestand aus die Form "# {a} | # {b}", was wäre der einfachste Weg, um beide lesen und diese Datei in das Array konvertieren:

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

Umm, ich Sie nur einen Code geschrieben, die für arbeiten würde | auch. Versuchen Sie das. – Elitecoder

+0

Schrieb einen anderen Code, der für "!" Funktionieren würde Ich hoffe es hilft. – Elitecoder

Antwort

2

Versuchen Sie Folgendes:

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

Oder wenn Ihr Separator in den regulären Ausdrücken und Ersatz nicht auftritt:

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

Unter der Annahme, dass der #{b} Teil wird nie ein | enthalten, erhalte ich folgendes:

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

Andernfalls werden Sie wahrscheinlich s.rindex('|') mit etwas komplizierter zu ersetzen.