使用Java在字符串中出现子串的次数和顺序

时间:2015-02-20 13:37:52

标签: java string

我有一个包含很多东西的字符串,我想解析它并以正确的顺序得到字符串“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类,但我遇到了订购问题。

我怎样才能干净利落?我不是在寻找代码,而只是一种正确的方法。

1 个答案:

答案 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
}