`

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

    博客分类:
  • 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;
	}

 

分享到:
评论

相关推荐

    Unicode和字符串

    字符串操作包括查找、替换、分割、连接等。在处理多语言字符串时,要特别注意字符长度的问题。由于Unicode字符可能占用多个字节,因此,基于字节的长度计算可能与基于字符的长度不一致。例如,一个英文单词的长度和...

    TCHAR字符串类 TString

    6. **截取与分割**:`Mid`、`Left`、`Right`等方法允许提取字符串的一部分,而`Tokenize`或`Split`函数可以将字符串分解为多个子字符串。 7. **转换操作**:`ToASCII`和`ToUnicode`(如果适用)可能用于在ANSI和...

    JS——字符串

    JavaScript(简称JS)是一种轻量级的解释型编程语言,主要应用于网页和网络应用开发,尤其在客户端渲染和...实际应用中,开发者还应关注性能优化、Unicode处理、字符串的比较操作以及在不同浏览器环境下的兼容性问题。

    JavaScript_字符串验证.zip

    JavaScript的`trim()`用于去除字符串两端的空白字符,`indexOf()`和`lastIndexOf()`检查子字符串是否存在,`length`属性获取字符串长度,`toUpperCase()`和`toLowerCase()`转换大小写,`split()`分割字符串,`...

    PHP中将一个字符串部分字符用星号*替代隐藏的实现代码

    先按$glue`分割字符串,然后对前半部分执行从右向左的隐藏操作。 - **类型3**:从指定字符位置分割后由左向右隐藏。同样先按$glue`分割,然后对后半部分执行从左向右的隐藏操作。 - **类型4**:保留首末指定字符串。...

    解决长度报错的qrcode.js

    该库的核心功能是解析输入的字符串,并将其编码为适合显示的二维码图像。在原始版本的`qrcode.js`中,如果输入的文本过长,可能会触发错误,因为二维码的容量有限,且不同纠错级别的二维码能承载的数据量也不同。 ...

    一些常用的string的校验和测试类

    15. **字符串分割与合并**:通过分隔符分割字符串为数组,或者将数组合并为字符串。 这些功能广泛应用于各种IT项目中,尤其是在处理用户输入、数据验证、日志记录、网络通信等环节。对于开发者来说,一个强大而易用...

    CString用法大全

    除此之外,`CString`还有许多其他的功能,例如连接字符串(`+`操作符或`Append`函数)、查找子字符串(`Find`、`FindOneOf`等)、替换子字符串(`Replace`)以及分割字符串(`Tokenize`)等。这些功能使得在C++中...

    火山PC按字数进行文本分割

    综上所述,"火山PC按字数进行文本分割"工具涉及到的关键技术包括Java编程、字符串处理、Android开发、跨平台兼容性以及可能的Apache开源库的使用。通过理解这些知识点,开发者可以更有效地利用这个工具进行文本处理...

    String.playground.zip

    正则表达式可以用于查找、替换或分割字符串,提供强大的文本匹配功能。 另外,Swift的字符串还支持迭代器,可以通过`for-in`循环遍历每一个字符,或者使用`enumerateSubstrings(in:options:)`获取带有位置信息的...

    php字符处理类.zip

    1. `strlen()`:计算字符串长度。 2. `str_replace()`:查找并替换字符串中的特定字符或子串。 3. `strpos()`:查找字符串中的子串位置。 4. `substr()`:截取字符串的一部分。 5. `trim()`:去除字符串两侧的空白...

    易语言模块文本分行3.0.rar

    3. **文本分行操作**:本模块的核心功能可能包括`分割字符串`函数,它能根据指定的分隔符将一个字符串拆分成多个子字符串组成的数组。此外,还有可能提供了去除首尾空白、处理特殊格式文本(如CSV或JSON)等功能。 ...

    易语言混合文本逐字分割

    1. **字符串处理**:在易语言中,字符串被视为一串字符序列,可以进行各种操作,如获取长度、截取、替换等。混合文本的逐字分割,就是将字符串按照每个字符进行切割,形成一个字符数组或列表。 2. **字符编码**:...

    易语言源码中英混合文本逐字分割例程.7z

    在易语言中,可以通过循环结构配合字符串长度函数来遍历每一个字符,并根据Unicode编码来判断字符类型,从而实现中英文的逐字分割。 例如,代码可能包含以下步骤: 1. 读取输入的中英混合文本。 2. 初始化一个空的...

    前端开源库-string-extended

    - **split()**: 分割字符串成数组,可能有自定义分隔符和限制项等选项。 - **join()**: 将字符串数组合并为单个字符串,类似于数组的`join()`方法。 3. **性能优化**: 开源库通常会在性能上下功夫,"string-...

    深入学习C++ string 2.1

    - `c_str()`:返回指向C风格字符串的指针,用于与C风格的API兼容。 - `data()`:类似`c_str()`,但不保证以空字符结尾。 8. **效率考虑**: - `string`操作通常比直接操作C风格的字符数组更安全,但可能会有额外...

    Split function for c language

    C++兼容C语言,所以可能作者使用了C++来实现C风格的字符串分割函数。 - `StdAfx.cpp`:在Visual C++中,这个文件通常用于包含预编译头文件(`StdAfx.h`),以提高编译速度。 - `Sample.dsp`和`Sample.dsw`:这些都是...

    java代码-编写一个程序判断字符串符串“I am Tom, I am from China”中首字母出现。

    // 分割字符串,以空格为分隔符 ``` 接下来,我们要检查每个单词的首字母。Java中的字符串是Unicode兼容的,所以它可以处理各种字符集。首字母可以通过`words[i].charAt(0)`获取,其中`i`是单词数组的索引。 为了...

    jsj_Php_教程.pdf

    - `chunk_split()`将字符串分割成多个部分,每个部分指定长度。 - `explode()`将字符串按照分隔符拆分成数组。 - `htmlentities()`和`htmlspecialchars()`用于转义HTML实体,防止XSS攻击。 - `implode()`(等同于`...

    前端项目-string-fn.zip

    - `split`:按分隔符将字符串分割成数组。 - `join`:将数组元素合并为一个字符串。 - `format`:类似于C#的`string.Format`,将占位符替换为提供的参数。 - `padStart`/`padEnd`:在字符串的开头或结尾填充指定的...

Global site tag (gtag.js) - Google Analytics