`
skydove
  • 浏览: 19333 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

截取包含中、英文的字符串

阅读更多
// 用字节数组方法截取包含中、英文的字符串
	public static String splitStrByByte(String a, int length) {
		byte strs[] = a.getBytes();
		long count = 0;
		for (int i = 0; i < length; i++) {
			if (strs[i] < 0) {
				count++;
			}
		}

		// 如果有不完整的汉字,肯定是最后一个字符有问题
		int getLeng = count % 2 == 0 ? length : length - 1;

		return new String(strs, 0, getLeng);
	}

	// 用字符数组方法截取包含中、英文的字符串
	public static String splitStrByChar(String a, int length) {
		char strs[] = a.toCharArray();
		int charCount = 0;
		int temp = 0;
		for (char c : strs) {

			temp = temp + String.valueOf(c).getBytes().length;
			if (temp > length) {
				break;
			}
			charCount++;
		}

		return new String(strs, 0, charCount); // 注意这里:char数组,后面是字符数,而非byte数组的字节数
	}

	public static String splitStrByString(String src, int length) {
		
		byte [] strs = src.getBytes();
		String result = new String(strs, 0, length);

		if (!src.startsWith(result)) {
			result = new String(strs, 0, length - 1);
		}

		return result;
	}

 

 

以上3种方法都能达到按字节数截取字符串的目的

本机测试循环1万次,可以发现:

splitStrByByte耗时:94ms

splitStrByChar耗时:265ms ~ 281ms

splitStrByString耗时:141ms

可见第一种效率高点.

分享到:
评论

相关推荐

    delphi 实现截取字符串中中文+英文混合截取

    在Delphi编程环境中,处理中文和英文混合的字符串截取是一项常见的任务,特别是在涉及到文本处理、数据解析或者用户界面展示时。由于Unicode编码的存在,中文字符通常占据两个字节,而英文字符则占据一个字节,这就...

    java中截取带汉字的字符串

    在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取这些字符串。如果直接按照字节(byte)来进行分割,很容易导致中文字符被截断一半,从而形成乱码。这是因为一个中文字符通常占用多...

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

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

    JavaScript截取中文字符串

    字符串截取是指从一个较长的字符串中提取出特定长度或范围内的子字符串的过程。这在很多场景下都非常有用,比如在展示文章列表时只显示前几行文字,或者在处理大量数据时仅关注某些字段等。 ##### 2.2 中文字符编码...

    C++中英混合字符串截取

    题目中的问题聚焦于如何正确地截取一个中英混合的字符串,确保在截取过程中不会将汉字字符截断。这个问题涉及到字符编码、字符串处理以及对Unicode的理解。下面将详细解释相关知识点。 首先,我们要理解在C++中处理...

    PHP中如何截取中文字符串

    这里的`iconv_strlen()`用于计算字符串中的字符数,而不是字节数。注意,由于中文字符通常为三字节,所以除以3得到字符数。 3. **使用正则表达式** 如果你对正则表达式比较熟悉,还可以利用正则来截取中文字符串。...

    C#字符串截取固定长度的方法

    - 遍历字节数组,每两个字节转换成一个字符并累加到结果字符串中。 - 当字符计数达到指定长度时停止遍历。 #### 方法三:利用正则表达式 还可以使用正则表达式来实现更复杂的截取逻辑,例如只截取连续的英文字符或...

    中英文字符串按字节截取

    截取含有中英文的字符串,按字节进行截取,当出现汉字时不能截取半个汉字要把汉字补全。

    ASP中英文混合字符串的截取

    它通过遍历字符串中的每个字符,判断其ASCII值来区分英文和中文字符,英文字符增加长度计数器`tmpLen`1,中文字符则增加2。当`tmpLen`达到指定的`length`时,返回截取的子字符串并结束函数。 接下来,`CnLen()`函数...

    Java截取中英文混合字符串的方法

    Java截取中英文混合字符串的方法是指在Java语言中截取混合了中英文的字符串,并且保证汉字不被截半个的方法。这种方法在实际开发中非常有用,特别是在处理中文字符串时。 在Java中,字符串的截取可以使用substring...

    java中英文字符串截取

    本文将深入探讨如何在Java中有效地截取包含中文和英文字符的字符串,并解释给出的代码片段背后的逻辑。 ### Java中英文字符串截取的关键点 1. **字符编码的影响**:中文字符在不同的编码方式下占用的字节数不同。...

    PHP 不区分中英文截取utf8字符串

    这篇博客“PHP 不区分中英文截取utf8字符串”提供了一个解决方案,使得在UTF-8环境下可以正确地截取包含中文和英文的字符串,而不影响其完整性。 首先,我们需要理解UTF-8编码的特点。UTF-8是一种变长编码,英文...

    [待删除]字符串截取 - 中英文

    因此,当在Java程序中处理包含中英文混合的字符串时,必须考虑到编码差异,以避免截取错误或乱码的出现。 ### 实践应用 在实际开发中,特别是在Web开发、文本分析等领域,正确处理多语言字符串是非常关键的。使用...

    ASP截取固定长度字符串

    2. **Mid() 函数**:返回字符串中指定位置的子字符串。 - `Mid(string, start[, length])` - `string`:要提取的字符串。 - `start`:起始位置。 - `length`(可选):要返回的字符数。 3. **双字节字符问题**...

    关于java按字节截取带有汉字的字符串的解法

    在Java编程语言中,处理带有汉字的字符串时,由于汉字占据多个字节,按照字节进行截取可能会导致汉字被不完整地分割,从而产生乱码。为了解决这个问题,我们需要理解Unicode编码以及如何在Java中正确处理多字节字符...

    截取如下字符串“java程序教程”的前5个字节,字符串应该为“java程”,截取前6个字符,字符串也应该为“java程”,程序实现之.

    在这个特定的题目中,我们关注的是如何从包含中文的字符串中准确截取特定长度的字符和字节。题目中提到“截取前5个字节, 字符串应该为‘java程’”,意味着我们需要理解,在UTF-8编码格式下,英文字符通常占用1个...

    Pb字符串中的中文和英文(含符号)拆分

    例如,给定的标题 "Pb字符串中的中文和英文(含符号)拆分" 描述了一个需求:将像 '中字A文C' 这样的字符串拆分为 '中字文' 和 'AC'。为了实现这一功能,我们可以创建一个自定义函数,例如 `uf_split_str_enorcn()`。 ...

    LabVIEW拆分中文字符串.rar

    7. **示例代码**:这个"LabVIEW拆分中文字符串"的压缩包很可能包含了具体的代码示例,展示了如何在LabVIEW中正确拆分和操作中文字符串。通过学习和理解这些示例,可以加深对LabVIEW字符串处理的理解,尤其是处理多...

    Java精确截取字符串.pdf

    然而,当处理包含中文字符的字符串时,简单的按字符截取可能会出现问题,因为中文字符通常占用两个字节,而英文字符只占用一个字节。为了实现更精确的截取,可以采用如下的方法: ```java private String str; ...

    php不破坏单词截取子字符串类

    首先,这个类的核心思想是识别出字符串中的单词边界,然后根据指定长度进行截取。在英语或其他使用空格分隔单词的语言中,我们可以利用空格作为判断单词边界的依据。当截取时,如果即将截断一个完整的单词,那么就...

Global site tag (gtag.js) - Google Analytics