我正在尝试在每N次出现时拆分一个String,但是错过了最后的值。这就是预期的结果。
输入:String str = "234-236-456-567-678-675-453-564";
输出:
234-236-456
567-678-675
453-564
此处为N=3
,其中str
应在-
每隔三次出现时拆分。
答案 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;
}
}
}