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

你可能感兴趣的:(java String)