我有一个包含很多东西的字符串,我想解析它并以正确的顺序得到字符串“sat”和“unsat”的出现。
基本上,输入是一个字符串(见下文),输出就是 列表<整数>如果我发现“坐”,我会把1和如果“不满”0。
sat
(= abst1ring1 true)
(= availablering3 false)
(= intermring4 false)
(= availablering5 false)
(= availablering2 false)
unsat
sat
(= intermring5 false)
(= intermring2 false)
(= abstring5 true)
(= abstring2 true)
(= available1ring1 false)
(= interm1ring1 false)
(= abstring3 true)
(= availablering4 false)
(= abstring4 true)
(= intermring3 false)
(= htokenring2 3)
(= htokenring5 3)
(= htoken4 3)
(= htrigger1ring1 3)
(= htoken3 3)
(= htokenring3 3)
(= x5 3)
(= htoken1 3)
(= htoken1ring1 3)
(= x2 3)
unsat
unsat
这里我要找的输出是:
[1,0,1,0,0].
特别要知道“sat”也是“不满”的子串,这也会引起问题。
我尝试在Java中使用Pattern和Matcher类,但我遇到了订购问题。
我怎样才能干净利落?我不是在寻找代码,而只是一种正确的方法。
答案 0 :(得分:2)
为了好玩,您还可以使用StringReader并逐行读取String。
StringReader sr = new StringReader(yourString);
List<Integer> list = new ArrayList<>();
try (BufferedReader br = new BufferedReader(sr)) {
String line;
while ((line = br.readLine()) != null) {
if (line.equals("sat")) {
list.add(1);
} else if (line.equals("unsat")) {
list.add(0);
}
}
} catch (IOException e) {
//handle exception
}