我使用此代码从JTextArea
获取字符串,然后从我从JTextArea
获得的字符串中逐字符串替换。
String data = MainTextArea.getText().toString();
data = data.replaceAll("(", "<");
MainTextArea.setText(data);
我在这段代码的第二行写了一个错误:
线程中的异常&#34; AWT-EventQueue-0&#34; java.util.regex.PatternSyntaxException:索引1附近的未闭合组
我该怎么做才能解决这个问题?
我不知道是否应该提供更多有关问题的信息。
更新:
我正在使用HashMap<string,string>
来替换许多字符串,这些字符串可能包含一些像"("
这样的字符,它需要\之前如何知道这个字符串需要那些\当我使用这部分代码时
for (Map.Entry<String, String> entry : settingfile.CharactersMap.entrySet()) {
System.out.println(entry.getKey() + " | " + entry.getValue());
data = data.replaceAll(entry.getKey(), entry.getValue());
}
答案 0 :(得分:1)
您需要使用(
转义\\
。试试这个:
data = data.replaceAll("\\(", "<");
会很简单
data = data.replace('(', '<');
答案 1 :(得分:0)
来自这个家庭public String replace(char oldChar,
char newChar)
的不同方法不会使用正则表达式机制。
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replace(char,%20char)
所以你的代码可以是
data = data.replace('(', '<');
希望,非正则表达式版本也有更好的表现