摆脱java

时间:2016-03-16 09:03:24

标签: java

我正在用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

1 个答案:

答案 0 :(得分:2)

如果你想删除所有特殊字符,你可以这样做:

answer = answer.replaceAll("[^a-zA-Z ]+", "").trim();

<强>更新

删除运行后的任何重复空格,完整的解决方案可以做这样的事情:

answer.replaceAll("[^a-zA-Z ]+", " ")
    // remove duplicate spaces
    .replaceAll("[ ]([ ]+)", " ")
    // remove leading & trailing spaces
    .trim();

然后可以在空格上拆分以获得正确的消毒答案......

然而,正如@andy建议的那样,我建议找到数据的来源,并为它构建一个正确的数据结构,以便准确地返回您想要的内容。后处理应该只用于你无法控制的数据或旧版本等......