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