我正在研究一种基于 . 分隔符,我使用了 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() 很好,我想手动完成这项工作我犯了什么错误?