に基づいて文字列を分割するメソッドに取り組んでいます。区切り文字、PatternクラスとMatcherクラスを使用し、区切り文字の開始位置を取得して配列に格納しました。これらの開始位置に基づいて指定された文字列を分割したいのですが、問題は、次のコードを試したときに発生することです。 、プログラムは永久に実行されます(無限ループ)。
public void cutByRegex(){
String outPut="";
int i=0;
int startIndex[]=new int[3];
System.out.println("IP--->"+ip);
Pattern p=Pattern.compile("\\.");
Matcher m=p.matcher(ip);
while (m.find()){
startIndex[i]=m.start();
i++;
System.out.println("start: "+m.start());
}
System.out.println("StartIndices-->");
for(int j:startIndex)
System.out.println(j);
for(i=0;i<startIndex.length+1;){
switch(i){
case 0:
outPut+=ip.substring(i,startIndex[i]);
i++;
case 1:
outPut+=ip.substring(startIndex[i]-1,startIndex[i]);
i++;
case 2:
outPut+=ip.substring(startIndex[i]-1,startIndex[i]);
outPut+=ip.substring(startIndex[i],ip.length());
break;
}
System.out.println("group--->"+outPut);
}
}
例:startIndex配列に3,5,7が含まれています0--->3から4--->5から6--->7から8-->ip.lengthから127.1.1.254をサブストリングにします
注:組み込みのメソッドsplit()をよく知っていますが、手動でジョブを実行したいのですが、どのような間違いをしましたか?