有人能告诉我为什么这是一个无限循环吗?
private void splitBody() {
bodyparts=new Vector();
String body = "<br />testtestest<br />fefefefefefefefefef<br />qqqqqqqqqqqq";
int previousIndex=0;
while(body.indexOf("<br />",previousIndex)!=-1) {
int index=body.indexOf("<br />",previousIndex);
System.out.println(body.substring(previousIndex, index));
bodyparts.addElement(body.substring(previousIndex, index));
previousIndex=index;
}
}
答案 0 :(得分:3)
将最后一行更改为:
previousIndex = index + 1;
答案 1 :(得分:1)
由于您未更改body
字符串,因此indexOf
始终返回与-1
不同的索引,因为子字符串包含在body
中。
在循环结束时添加body = body.substring(index);
以修复此问题。
答案 2 :(得分:1)
这应解决问题:
previousIndex=index + 1;
否则你总能找到第一次出现的模式。
或者 - 简化整个事情:
String[] parts = body.split("<br />");
答案 3 :(得分:1)
indexOf操作返回起始位置。如果你想继续前进,就像这样增加previousIndex。
bodyparts=new Vector();
String body = "<br />testtestest<br />fefefefefefefefefef<br />qqqqqqqqqqqq";
int previousIndex=0;
while(body.indexOf("<br />",previousIndex)!=-1) {
int index=body.indexOf("<br />",previousIndex);
System.out.println(body.substring(previousIndex, index));
bodyparts.addElement(body.substring(previousIndex, index));
previousIndex=index+("<br />".size());
}