java 中将以逗号分隔的字符串按照N个一组划分的方法



import java.util.ArrayList;
import java.util.List;

/**
* @author thinkpad
*
*/
public class TestString {


/**
* 循环查找
* @param source
* @param target
* @param num
* @param result
*/
public static List<String> findStringArray(String source,String target,int num){
List<String> result = new ArrayList<String>(0);
int index =0;
int preIndex = 0;
int sum = 0;
while((index=source.indexOf(target,index))!=-1){
index ++;
sum++;
if(sum > 0 && sum%num==0){
String s =source.substring(preIndex, index);
s=s.substring(0, s.lastIndexOf(target));
preIndex =index;
result.add(s);
}
}
if(preIndex<source.length()){
if(source.endsWith(target)){
String s =source.substring(preIndex);
int lastCommaIndex = s.lastIndexOf(target);
if(lastCommaIndex!=-1){
s=s.substring(0,lastCommaIndex);
}
result.add(s);
}else{
result.add(source);
}
}
return result;
}

/**递归查找
* @param source
* @param target
* @param num
* @param result
* @return
*/
public static boolean findStringArrayWhile(String source,String target,int num,List<String> result ){
int index =0;
int sum = 0;
if(source.indexOf(target)==-1){
result.add(source);
return true;
}
while((index=source.indexOf(target,index))!=-1){
sum++;
index++;
if(sum > 0 && sum%num==0){
String s =source.substring(0, index);
s=s.substring(0, s.lastIndexOf(target));
result.add(s);
if(source.length()<index){
result.add(source);
return true;
}
source = source.substring(index);
boolean t =findStringArrayWhile(source, target, num, result);
if(t){
return true;
}
}
}
if(source.length()%num<num){
result.add(source);
return true;
}
return false;
}

/**
* @param args
*/
public static void main(String[] args) {
String source="1,2,3,4,5,6,7,8,9,0";
List<String> result =new ArrayList<String>(0);
result=findStringArray("1,2,3,4", ",",4);


findStringArrayWhile(source, ",", 10, result);
for(String s:result){
System.out.println(s);
}
}


}
欢迎测试,欢迎提bug
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值