从一个字符串实例打印到另一个实例

时间:2016-04-15 23:09:42

标签: java string

我们说我有这个字符串:

[0 1 2]
[0 1 1]
[0 1 3]
[1 2 3]
[2 4 6]
[9 5 2]
[0 1 3]

我想打印从[0 1 3的一个实例到下一个[0 1 3]实例的所有内容。在这个例子中,我想打印:

[0 1 3]
[1 2 3]
[2 4 6]
[9 5 2]
[0 1 3]

我如何用Java做到这一点?为了说明我是否有一种方法可以使用substring以某种方式操纵它来打印这个或者我必须得到第一个实例的索引,继续删除直到我到达下一个?

1 个答案:

答案 0 :(得分:1)

您可以通过将子字符串从[0 1 3]的第一个索引开始到[0 1 3]的第二个索引来完成此操作。第二个索引是通过调用indexOf(str, fromIndex)找到的:这个方法开始从给定的索引开始,所以我们给它第一个找到的索引(移位,以便它找不到已找到的索引)。

以下代码将str内的字符串和sequence中的查找序列存储起来。检索第一个索引。如果找到,我们查找第二个索引,如果找到那个索引,我们将获取子字符串。我们需要在获取子字符串时添加sequence.length()以考虑您要保留的最终序列。

public static void main(String[] args) {
    String str = "[0 1 2]\n[0 1 1]\n[0 1 3]\n[1 2 3]\n[2 4 6]\n[9 5 2]\n[0 1 3]";
    String sequence = "[0 1 3]";

    int firstIndex = str.indexOf(sequence);
    if (firstIndex >= 0) {
        int secondIndex = str.indexOf(sequence, firstIndex + sequence.length());
        if (secondIndex >= 0) {
            String result = str.substring(firstIndex, secondIndex + sequence.length());
            System.out.println(result);
        }
    }

}

打印

[0 1 3]
[1 2 3]
[2 4 6]
[9 5 2]
[0 1 3]