使用括号replaceAll方法Java

时间:2014-08-19 00:27:53

标签: java string match replaceall

我想在一个句子中更改一个单词,但这个单词有括号。我把它保存在String变量中。在变量 st 里面我有

manages(P0,MT0)

在其他String变量DES内部,我有以下句子:

query(MT0, P0) :- not(manages(P0,MT0)), ins_manages(P0,MT0), not(physician(P0)), not(ins_physician(P0))

所以我有另一个字符串变量querypart,用于存储新单词:

managesa

我在代码中尝试的是:

EDC = EDC.replaceAll(st,querypart);

但它不起作用。

我认为问题可能是paranthesis,所以我像st变量一样更改了字符串:

manages\\(P0,MT0\\)

然后我试了

EDC = EDC.replaceAll(st,querypart);

但我得到了一些结果。问题是当我使用replaceAll时:

EDC = EDC.replaceAll("manages\\(P0,MT0\\)",querypart);

句子改变

query(MT0, P0) :- not(managesa), ins_manages(P0,MT0), not(physician(P0)), not(ins_physician(P0))

我想这是因为括号,但我找不到任何解决办法?解决方案是什么?

1 个答案:

答案 0 :(得分:1)

我相信你想使用String#replace()(不是replaceAll),这个

String EDC = "query(MT0, P0) :- not(manages(P0,MT0)), "
    + "ins_manages(P0,MT0), not(physician(P0)), not(ins_physician(P0))";
String queryPart = "managesa";
EDC = EDC.replace("manages(P0,MT0)", queryPart);
System.out.println(EDC);

输出

query(MT0, P0) :- not(managesa), ins_managesa, not(physician(P0)), not(ins_physician(P0))