使用括号replaceAll方法Java
我想在一个句子中改变一个单词,但这个单词有括号。 我把它保存在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))
我想这是因为括号,但我找不到任何解决方案呢? 解决办法是什么?
我相信你想使用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))