java - 根据点分隔符分割字符串

标签 java regex split switch-statement

我正在研究一种基于 .分隔符,我已经使用了 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 我想对 127.1.1.254 进行子串 从0--->3 从4--->5 从6--->7 从8开始--->ip.length

注意:我很了解内置方法 split(),我想手动完成这项工作 我犯了什么错误??

最佳答案

您没有在 for 循环 i 变量和 case block 2 中使用增量部分

你的代码

    for(i=0;i<startIndex.length+1;){

      case 2:
         outPut += ip.substring(startIndex[i] - 1, startIndex[i]);
         outPut += ip.substring(startIndex[i], ip.length());

         break;
    }

change with it  

 for (i = 0; i < startIndex.length + 1;i++) {    
       case 2:
         outPut += ip.substring(startIndex[i] - 1, startIndex[i]);
         outPut += ip.substring(startIndex[i], ip.length());
         i++;
         break;

        }

关于java - 根据点分隔符分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13926358/

相关文章:

java - 如何: Struts 2 validating dynamic forms array

ruby - 用于查找最多 n 个连续模式的正则表达式

regex - 从 fs_usage 的输出中提取路径

excel - 如何在 Excel 中拆分/解析第一个数字周围的字符串

python - 在大空白处分割 Pandas

java - 在模式上分割字符串首先出现,如 ";;;"在 Post Java 中解释?

java - Wicket 口出现问题

java - 从字符串中检索字符

regex - 2位或5位数字的正则表达式

java - 允许使用逗号和句点的正则表达式