如何在Java中每出现第N个字符时拆分一个字符串

时间:2017-07-26 09:31:09

标签: java

我正在尝试在每N次出现时拆分一个String,但是错过了最后的值。这就是预期的结果。

输入:String str = "234-236-456-567-678-675-453-564";

输出:

234-236-456  
567-678-675  
453-564 

此处为N=3,其中str应在-每隔三次出现时拆分。

3 个答案:

答案 0 :(得分:2)

试试这个。

code

结果:

String str = "234-236-456-567-678-675-453-564";
String[] f = str.split("(?<=\\G.*-.*-.*)-");
System.out.println(Arrays.toString(f));

答案 1 :(得分:1)

您可以使用Java 8尝试以下内容:

String str = "234-236-456-567-678-675-453-564";
Lists.partition(Lists.newArrayList(str.split("-")), 3)
    .stream().map(strings -> strings.stream().collect(Collectors.joining("-")))
    .forEach(System.out::println);

输出:

234-236-456
567-678-675
453-564

答案 2 :(得分:0)

可能是没有使用java中可用函数的最坏方法之一,但很像练习:

public static void main(String[] args){
        String s = "234-236-456-567-678-675-453-564";
        int nth =0;
        int cont =0;
        int i=0;
        for(;i<s.length();i++){
            if(s.charAt(i)=='-')
                nth++;
            if(nth == 3 || i==s.length()-1){
                if(i==s.length()-1) //with this if you preveent to cut the last number
                System.out.println(s.substring(cont,i+1));
                else
                    System.out.println(s.substring(cont,i));
                nth=0;
                cont =i+1;


            }
        }
    }