2016-07-25 12 views
0

Ich mache eine Million verschiedene Regex Ersetzungen einer Zeichenfolge. Daher habe ich beschlossen, alle String-Regex- und String-Ersetzungen in einer file.txt zu speichern. Ich habe versucht, die Datei Zeile für Zeile zu lesen und zu ersetzen, aber es funktioniert nicht.Ersetzen Sie eine Million verschiedene Regex einer Zeichenfolge

replace_regex_file.txt

aaa zzz 
^cc eee 
ww$ sss 
... 
... 
... 
... 
a million data 

String user_input = "assume 100,000 words"; // input from user 
String regex_file = "replace_regex_file.txt"; 
String result=""; 
String line; 
try (BufferedReader reader = new BufferedReader(new FileReader(regex_file)) { 
    while ((line = reader.readLine()) != null) { // while line not equal null 
     String[] parts = line.split("\\s+", 2); //split process 
     if (parts.length >=2) { 
     String regex = parts[0]; // String regex stored in first array 
     String replace = parts[1]; // String replacement stored in second array 
     result = user_input.replaceAll(regex, replace); // replace processing 
     } 
    } 
} System.out.println(result); // show the result 

Coding Aber es nicht alles ersetzen. Wie kann ich das beheben?

+0

Haben Sie Ihr Programm mit einem Debugger durchlaufen? – Idos

+0

Sie sollten debuggen String [] parts = line.split ("\\ s +", 2); ;) – HRgiger

Antwort

0

Ihr aktueller Code wird nur die letzte passende Regex anwenden, da Sie das Ergebnis des Ersatzes zurück in die Eingabezeichenfolge nicht zuordnen:

result = user_input.replaceAll(regex, replace); 

Stattdessen versuchen:

String result = user_input; 

außerhalb der Schleife und

result = result.replaceAll(regex, replace);