2016-07-25 22 views
0

我正在做一百萬個不同的正則表達式替換一個字符串。因此,我決定將所有String regex和String替換保存在file.txt中。我試着逐行閱讀文件並替換它,但它不起作用。替換一百萬個不同的字符串正則表達式

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 

但它不會取代任何東西。我怎樣才能解決這個問題?

+0

你用調試器你的程序? – Idos

+0

你應該調試String [] parts = line.split(「\\ s +」,2); ;) – HRgiger

回答

0

您當前的代碼將只應用於最後一個匹配的正則表達式,因爲你沒有更換的結果分配回輸入字符串:

result = user_input.replaceAll(regex, replace); 

相反,嘗試:

String result = user_input; 

外循環和

result = result.replaceAll(regex, replace);