`

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
0
分享到:
评论

相关推荐

    将逗号分隔的字符串转换为行记录.rar

    excel将逗号分隔的字符串转换为行记录,使用excel宏(VBA)循环实现,亲测可用,欢迎下载使用!!!

    SQL server中字符串逗号分隔函数分享

    继SQl -Function创建函数数据库输出的结果用逗号隔开,在开发中也有许多以参数的形式传入带逗号字条串参数(数据大时不建议这样做) 例:查找姓名为“张三,李二” 的数据此时在数据库里就要对此参数做处理如图: ...

    MySQL中将一列以逗号分隔的值行转列的实现

    即一列中存储了多个属性值。如下表 pk value 1 ET,AT 2 AT,BT 3 AT,DT 4 DT,CT,AT 一般有这两种常见需求(测试数据见文末) 1.得到所有的不重复的值,如 value AT BT CT DT ET SQL...

    C语言标准教程第一章 C语言概论

    因此,这两个函数在括号中的参数表都由以下两部分组成: “格式控制串”,参数表 格式控制串是一个字符串,必须用双引号括起来,它表示了输入输出量的数据类型。各种类型的格式表示法可参阅第三章。在printf函数中...

    C语言的基础教程 TXT格式

    C 规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线()组成的字符串,并且其第一个字符必须是字母或下划线。 以下标识符是合法的: a,x, 3x,BOOK 1,sum5 以下标识符是非法的: 3s 以数字开头 s*T 出现非法...

    c#学习笔记.txt

    当接口具有一个或多个显式基接口时,在该接口声明中,接口标识符后跟一个冒号以及由逗号分隔的基接口标识符列表。接口的基接口是显式基接口及其基接口。换言之,基接口集是显式基接口、它们的显式基接口(依此类推)...

    SketchUp-Units-and-Locale-Helper:SketchUp 中处理单元的辅助模块和类

    SketchUp 的缺点区域设置SketchUp 缺少的是在用户的语言环境中将常规数字与数字对象相互转换为字符串的方法。 例如1.5.to_s将返回字符串"1.5"即使用户语言环境使用逗号作为小数点分隔符 - 即使1.5.mm.to_s将返回"1,5...

    commata:COMMATA(X) 在命令窗口中以表格形式显示矩阵 X 的内容。-matlab开发

    COMMATA(X) 在命令行窗口中将矩阵 X 的内容(仅实数元素)显示为表格(精度为 .6e 的制表符分隔字符串)。 突出显示数据后,可以使用复制和粘贴将其传输到电子表格。 小数点分隔符由逗号替换,以匹配德国的小数点...

    SQL语法大全

    这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。 CursorType Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括...

    WinRAR_4.0.exe

    令是一个字符串(或单个的字母),命令 RAR 去执行一个相应的操作。开关被用来 改变 RAR 执行操作的方法。其它参数是压缩文件名和被压缩的文件或要从压缩文件 中被解压文件。 列表文件是一个包括处理的文件名的纯...

    rar压缩软件.rar

    令是一个字符串(或单个的字母),命令 RAR 去执行一个相应的操作。开关被用来 改变 RAR 执行操作的方法。其它参数是压缩文件名和被压缩的文件或要从压缩文件 中被解压文件。 列表文件是一个包括处理的文件名的纯...

    注册表修改大全(作者:Sunny)

    有的计算机的Windows 95/98关机特别慢,在选择完关闭计算机后会等上好几分钟才关机,打开我的电脑\HKEY_LOCAL_MACHINE\System\CourrentControlSet\Control\Shutdown,在文件夹下创建一个名为FastReboot 的字符串键...

    EditorMacro - 在 Matlab 编辑器和命令窗口中为键盘击键分配一个宏:EditorMacro 在 Matlab 编辑器和命令窗口中为请求的键绑定分配一个宏或动作-matlab开发

    KEYSTROKE 是键盘组合的字符串表示。 特殊修饰符(Alt、Ctrl 或 Control、Shift、Meta、AltGraph)被识别,并且应该用空格、破折号 (-)、加号 (+) 或逗号 (,) 分隔。 如果 KEYSTROKE 已经定义,那么它将被更新...

    table:TABLE(X) 在命令行窗口中以表格形式显示矩阵 X(仅实数元素)的内容。-matlab开发

    TABLE(X) 在命令行窗口中将矩阵 X 的内容(仅实数元素)显示为表格(精度为 .6e 的制表符分隔字符串)。 突出显示数据后,可以使用复制和粘贴功能将其传输到电子表格中。 注意:有关此M文件使用逗号作为小数点分隔符...

Global site tag (gtag.js) - Google Analytics