2011-01-28 80 views
0

我很努力地使用包含特殊的正則表達式字符的字符串替換。我從文件中獲得了分隔符列表,我需要將這些字符的轉義形式替換爲非轉義字符。替換Java字符串中的 F

映射表如下。請注意,解析文件後轉義字符是已知的,所以我不能硬編碼替換字符串。

escapeChar + F + escapeChar <=> sep1 
escapeChar + S + escapeChar <=> sep2 
escapeChar + T + escapeChar <=> sep3 
escapeChar + R + escapeChar <=> sep4 
escapeChar + E + escapeChar <=> escapeChar 

比方說,你有文件解析爲以下分離

sep1 = | 
sep2 =^
sep3 = & 
sep4 = $ 
sep5 = \ 

所以,當你分析文件,並輸入如下\F\\S\\T\\R\\E\後。應該翻譯成|^&$\

下面的代碼不工作(我只是嘗試與第一分隔符):

String sep1 = "|"; 
String escapeChar = "\\"; 
String x = "\\F\\\\S\\\\T\\\\R\\\\E\\"; 
x.replaceAll(Pattern.quote(escapeChar) + "F" 
     + Pattern.quote(escapeChar), sep1); 
System.out.println(x); 

回答

2

字符串是在Java中不可改變的。 String.replaceAll返回執行替換的新字符串,而不是更改現有字符串的內容。嘗試:

x = x.replaceAll(...); 

這似乎工作正常,假設我明白你想要做什麼。

+0

非常類似的答案和關於一件事的問題...... – 2011-01-28 18:46:38