有人可以告訴我爲什麼這是一個無限循環?使用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