我正在努力替换包含特殊正则表达式字符的字符串。我从文件中获得了分隔符列表,我需要将这些字符的转义形式替换为未转义的字符。

映射表如下。请注意,解析文件后便知道转义字符,因此我无法对替换字符串进行硬编码。

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);

最佳答案

字符串在Java中是不可变的。 String.replaceAll返回执行了替换操作的新字符串,而不是更改现有字符串的内容。尝试:

x = x.replaceAll(...);


假设我了解您要执行的操作,这似乎很好。

09-26 12:53