`

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

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

 

分享到:
评论

相关推荐

    支持中文的PHP按字符串长度分割成数组代码

    接下来,`str_split_unicode`函数也能够实现按长度分割字符串的功能,这个函数对单字节和多字节字符都进行了兼容处理。它同样接收两个参数,`$str`为待分割的字符串,`$l`为分割长度,默认为0。如果`$l`大于0,则...

    高效中英文字符串截取方法

    ### 高效中英文字符串截取方法 #### 知识点概述 本文将详细介绍一种用于高效截取中英文混合字符串的方法。该方法适用于处理大量数据(例如10万条记录),能够在极短的时间内(例如1秒)完成所需的操作。这种方法...

    Unicode和字符串

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

    j2me自动分割换行字符串

    通过上述方法,我们可以在J2ME环境中有效地实现字符串的自动分割换行,从而提高应用的兼容性和用户体验。这种方法不仅可以应对不同分辨率的屏幕,还能控制文本的最大显示行数,非常适合于需要灵活适配多种设备的应用...

    TCHAR字符串类 TString

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

    C#中英文混合字符串截取函数

    第二个函数是`GetByteString`,它的功能是在截取字符串的同时保证字符串按ASCII编码后的字节长度不超过指定的最大长度,常用于对URL进行编码以避免URL过长。该函数的实现包括以下步骤: 1. 从原字符串中截取到最大...

    JS——字符串

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

    php判断字符串在另一个字符串位置的方法

    PHP的字符串函数通常都以字节流处理字符串,所以在处理多字节字符(如中文)时,需要确保字符串处理函数与编码方式兼容。 总的来说,PHP的`strstr()`函数是字符串处理中的重要工具,结合其他字符串函数,可以实现...

    JavaScript_字符串验证.zip

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

    字符串操作

    - **`strsep`**:分割字符串,按指定分隔符返回子串,并修改原始字符串。 - **`strspn`**:计算从字符串开头到遇到不在指定字符集内的第一个字符为止的长度。 - **`strstr`**:在字符串中搜索子字符串的第一次出现...

    js字符限制(字符截取) 一个中文汉字算两个字符

    在JavaScript编程中,一个中文汉字往往被视为两个字节(byte),而英文字符则通常只占用一个字节。 根据给定文件内容,我们可以了解到有关js字符限制和字符截取方面的相关知识点。从文件中的核心js代码可以看出,...

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

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

    Python程序设计之字符串

    - `split()`和`rsplit()`用于分割字符串,`partition()`则将字符串分为三部分,前后部分加上指定的分隔符。 - 转换方法如`upper()`、`lower()`、`capitalize()`、`title()`和`swapcase()`用于改变字符串的大小写。...

    js获取字符串最后一位方法汇总

    `split()`方法将字符串分割成一个数组,可以使用分隔符(空字符串在本例中)进行分割。然后可以通过数组的最后一个元素来获取字符串的最后一位。例如,`str.split('')[str.split('').length - 1]`。 示例代码: ...

    javascript查询字符串参数的方法

    查询字符串参数方法的核心在于,通过分割字符串的方式将键值对分离出来,然后对每个键值对进行解码,最终形成一个对象,这个对象的属性名对应于查询参数的键,属性值对应于查询参数的值。 具体实现中,我们定义了一...

    將字串以一定長度或特定字母作分隔後存入table.doc

    - **按长度分割**: 如果知道每个子字符串的最大长度,可以按照这个长度切割字符串。例如,在描述中提到的`OUTPUTLEN = 35`,意味着将字符串按照每35个字符切割。这种做法常用于限制显示宽度或者创建适合表格的行。 ...

    一文带你了解Python中的字符串是什么

    你可以检查某个元素是否存在于字符串中(`x in s` 或 `x not in s`),连接两个字符串(`s + t`),复制字符串(`s * n`),访问或截取字符串中的特定部分(`s[i]`,`s[i:j]`,或`s[i:j:k]`),获取字符串长度(`len...

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

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

    java字符串切割实例学习(获取文件名)

    1. 使用`String.split(String regex)`方法根据正则表达式分割字符串。 2. 正则表达式中的斜杠`/`需要双写`//`来表示单个斜杠。 3. 在Windows路径中,反斜杠`\`需要转义为`/`才能在正则表达式中使用。 4. 使用`String...

    CString用法大全

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

Global site tag (gtag.js) - Google Analytics