我正在用SWI-prolog和Java编写一个程序。
我的问题是,当我在[]
的回复中打印prolog的结果时,我不想要这个。
打印结果的代码是
String t8 = "findDiseases(" + mylist + ",Diseases)."+ "\n";
Query q8 = new Query(t8);
Diagnosis_txt.append("Με τις δοθείσες πληροφορίες πάσχετε από: " +
"\n" +
"\n" +
q8.oneSolution().get("Diseases"));
while (q8.hasMoreSolutions()) {
Map<String, Term> s7 = q8.nextSolution();
System.out.println("Answer is " + s7.get("Diseases"));
}
打印结果是
Answer is '[|]'(drepanocytocis, '[|]'(drepanocytocis, '[]'))
我想摆脱这个[|]
和[]
。我只想打印drepanocytocis
。
答案 0 :(得分:2)
如果你想删除所有特殊字符,你可以这样做:
answer = answer.replaceAll("[^a-zA-Z ]+", "").trim();
<强>更新强>
删除运行后的任何重复空格,完整的解决方案可以做这样的事情:
answer.replaceAll("[^a-zA-Z ]+", " ")
// remove duplicate spaces
.replaceAll("[ ]([ ]+)", " ")
// remove leading & trailing spaces
.trim();
然后可以在空格上拆分以获得正确的消毒答案......
然而,正如@andy建议的那样,我建议找到数据的来源,并为它构建一个正确的数据结构,以便准确地返回您想要的内容。后处理应该只用于你无法控制的数据或旧版本等......