`

按长度分割字符串,兼容中文

    博客分类:
  • java
 
阅读更多
/**
	 * 字符串按长度分割,兼容中文
	 * @param s			原字符串
	 * @param length	分割的长度(集合元素最大的长度为这个长度+1)
	 * @return
	 */
	public static List<String> getSplitedString(String s,int length){
		List<String> splitedString = new ArrayList<String>();
		if (s == null || s.length() == 0) {
			return splitedString;
		}
		int len = 0; // 保存实际集合元素的长度
		StringBuffer sb = new StringBuffer(1001);// 集合元素
		for (int i = 0; i < s.length(); i++) {
			char c = s.charAt(i);
			sb.append(c);
			if (isChinese(c)) { // 是中文汉字和符号
				len = len + 2; // 长度加2
			} else {
				len++;// 其它长度加1
			}
			if(len>=length){//实际长度大于或等于规定长度,向集合中添加元素,并重置临时变量
				splitedString.add(sb.toString());
				len = 0;
				sb = new StringBuffer(1001);
			}
		}
		if(sb.length()>0){
			splitedString.add(sb.toString());
		}
		return splitedString;
	}
	
	
	// 根据Unicode编码完美的判断中文汉字和符号
	private static boolean isChinese(char c) {
		Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
		if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
				|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
				|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
				|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
			return true;
		}
		return false;
	}

 

分享到:
评论

相关推荐

    C语言讲义.doc

    8.7.16 strtok分割字符串 44 8.7.17 atoi转化为int 45 8.7.18 atof转化为float 45 8.7.19 atol转化为long 45 9 函数 45 9.1 函数的原型和调用 45 9.2 函数的形参与实参 45 9.3 函数的返回类型与返回值 46 9.4 MAIN...

    EXCEL集成工具箱V6.0

    能将最多三个任意区域存储格(或列)的内容按自定的分隔符号连接成一个字符串写入指定的存储格或新工作表中。可以生成含重复值与不含重复值并可选是否排序的连接字符串。连接上万个字符只需短短1分钟即完成。 ...

    EXCEL集成工具箱V8.0完整增强版(精简)

    能将最多三个任意区域存储格(或列)的内容按自定的分隔符号连接成一个字符串写入指定的存储格或新工作表中。可以生成含重复值与不含重复值并可选是否排序的连接字符串。连接上万个字符只需短短1分钟即完成。 ...

    Lephone Loczlize Plus 1.06 中文免费版 PE 字串替换器.zip

    Lephone Loczlize Plus 1.06 中文注册版是一个本地化工具,主要用于非资源格式的本地化工作,支持的种类包括非资源格式的 C 编译的程序中的 ASCII 字符串和 UniCode 字符串、非资源格式的 Delphi(C++ Builder)编译...

    javascript常用函数(1)

    文章主要内容列表: 1、 调整图片大小,不走形(FF IE 兼容)/ 剪切图片(overflow:hidden) 2、 控制textarea区域文字数量 ...12、 转换字符串为数字 13、 判断文件格式(获得文件后缀) 14、 截取字符串 15、分割

    java jdk实列宝典 光盘源代码

    判断一个字符串是否是合法的java标识符;使用StringBuffer;IP地址转化成整数,整数转化成IP地址; 十八为身份证格式验证;表达式解析器;字符串编码的转换;字符串对齐器;密码加密和验证(MD5); 制作命令行程序...

    你必须知道的495个C语言问题

    例如定义一个包含N个指向返回指向字符的指针的函数的指针的数组? 1.22 如何声明返回指向同类型函数的指针的函数?我在设计一个状态机,用函数表示每种状态,每个函数都会返回一个指向下一个状态的函数的指针。可我...

    《你必须知道的495个C语言问题》

    书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面的主题,并分别给出了解答,而且结合代码示例阐明要点。 《你必须知道的495个C语言问题》结构...

    Hacking Vim

    g# 向前查找光标下字符串(不必是整词) g* 向后查找光标下字符串(不必是整词) vimgrep /pattern/[j][g] file file2 … fileN 多文件查找 使用标志(mark)定位: 0~9 系统自用 a-z 本文件mark (使用方法: 标志:ma, 调...

    asp 完全教程

    Split(Temp, ", ") %&gt; 此处的JScript join()方法将数组myJSArray元素转换到一个以逗号为分割符的字符串, VBScript Split()函数将字符串转换为VBScript数组。注意这里我们是在VBScript环境下调用JScript的...

    WinRAR_4.0.exe

    RAR 将使用这个字符串作为命令行的默认参数,并将使用 1024KB 字典大小来创建 “固实”压缩文件。 RAR 控制选项使用下列优先级: 命名行开关 最高优先级 在 RAR 变量中的开关 低优先级 保存在配置文件中的...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -Window的Target属性由字符串类型变为枚举类型,注意更新以前的代码:Target="_self" -&gt; Target="Self", Target="_parent" -&gt; Target="Parent"。 -MenuButton, LinkButton, Button, LinkButtonField的...

    精易模块[源码] V5.15

    4、改善“文本_逐字分割”改善个别字符分割错误的情况,代码由易友【@百弊若愚】提供。 5、改善“窗口_激活,窗口_置控件焦点,窗口_是否在最顶端”有时失败的问题,由易友【@wjt741106】提供代码。 6、新建“外部...

    ExtAspNet_v2.3.2_dll

    -Window的Target属性由字符串类型变为枚举类型,注意更新以前的代码:Target="_self" -&gt; Target="Self", Target="_parent" -&gt; Target="Parent"。 -MenuButton, LinkButton, Button, LinkButtonField的...

    C#微软培训资料

    &lt;&lt;page 1&gt;&gt; page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 ... 比尔....这一天 微软公司正式推出了其下一代...

Global site tag (gtag.js) - Google Analytics