これはなぜinfinteループですか?あなたはbody
文字列を変更しないので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;
}
}
私が選んだ答えはより良い解決策だと思います。 previousIndexを1増やしますが、探しているパターンは6文字の長さですので、6が良いです。したがって、ソリューションアドバイスのように次の5文字を確認する必要はありません。これが意味ですか? – Vincent
実際にはありません。 1つをインクリメントすることで、検索しているパターンが文字列の先頭に見つかりません。したがって、問題は解決されます。簡単に言えば、検索は「br />」から始まり、「
」を探しているので、次の出現「
」まで見つけることはできません。選択したソリューションは、各反復でパターンのサイズを不必要に計算します。 – aligf
はい、再び出現を見つけることはできませんが、それでも "br />"をチェックします。ちょうど6を追加すると、それは見えなくなり、見栄えが始まります。しかし、実際に私はあなたの答えの両方を選んだ。あなたのようにBRのサイズを計算して速くnrを追加するだけなので、1の代わりに6を追加すると少し速くなります。 – Vincent