有人可以告诉我为什么这是一个无限循环?使用indexof寻找字符串模式
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;
}
}
因为我认为我选择的答案是一个更好的解决方案。你用1增加previousIndex,而6更好,因为我要找的模式长6个字符。所以你不需要检查你的解决方案建议的接下来的5个字符。这是否使感觉? – Vincent 2010-12-14 15:10:31
不是。通过增加一个,你正在搜索的模式不会在字符串的开头找到,因此你的问题将被解决。简而言之,搜索将从“br />”开始,并且您正在查找“
”,因此直到下一次出现“
”时才会找到它。您选择的解决方案不必要地计算每次迭代时图案的大小。 – aligf 2010-12-14 15:15:00
是的,它不会再次找到发生,但它仍然会检查“br />”,而当我只加6时,它不会,并开始照看。但实际上我选择了你的两个答案;你的,因为只是增加nr s然后计算br的大小就像你说的那样,因为加6而不是1会快一点。 – Vincent 2010-12-14 15:20:12