我们说我有这个字符串:
[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
以某种方式操纵它来打印这个或者我必须得到第一个实例的索引,继续删除直到我到达下一个?
答案 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]