`
56553655
  • 浏览: 202917 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

字符串截取及中文处理方法

 
阅读更多
 /**
	 * 从原字符串根据最大字节长度以及需要保留的字节长度,获取子字符串,“最大字节长度”用于判断原字符串字节长度是否超过该长度,如果超过则截取“需要保留的字节长度”子串并补充“...”返回,如果未超过,则直接返回原字符串;<br>
	 * 这里考虑到其中有中文的情况,如果最后一个字节为中文的一半,则去掉该字节,显示字节长度为“需截字节长度-1”;<br>
	 * 如果输入需要截取的字节长度超过了当前传入字符串的字节长度,则返回全部字符串,不报异常;<br>
	 * 如果需要截取的字节长度小于当前字符串的长度,则在考虑中文情况下截取指定的字符串,并补充“...”返回。<br>
     * @param str					原字符串
     * @param maxBytesLength		最大字节长度(如果原字符串的字节长度超过该长度,就需要做字符截取处理,否则直接返回原字符串)		
     * @param keepBytesLength		需要保留的字节长度
     * @param needMore				是否需要补充"..."
     * @return
     * @throws UnsupportedEncodingException
     */
    public static String subString(String str, int maxBytesLength,int keepBytesLength, boolean needMore) {
		int chineseByteNum = 0;
		byte bt[] = null;
		try {
			bt = str.getBytes(CHARSET_GBK);
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if(bt.length<=maxBytesLength) return str;
		for (int i = 0; i < keepBytesLength; i++) {
			if (bt[i] < 0) {//中文
				chineseByteNum++;
			}
		}

		if (!(chineseByteNum % 2 == 0)) {//在截取的范围内中文刚好截取完,不存在半个中文的情况
			keepBytesLength--;
		}

		StringBuffer substrx=new StringBuffer("");
		try {
			substrx = substrx.append(new String(bt, 0, keepBytesLength,CHARSET_GBK));
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if(needMore){
			substrx.append("...");
		}
		return substrx.toString();

	}

 

分享到:
评论

相关推荐

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

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

    C#字符串截取

    以上三种方法分别适用于不同的字符串截取场景,其中 `GetFirstString` 方法考虑了中文字符的特殊性,而 `StringbSubString` 和 `CutString` 方法则更侧重于英文和数字字符的处理。在实际开发过程中,可以根据具体的...

    截取指定长度的字符串

    截取字符串通常有两种主要方法:固定位置截取和指定长度截取。 1. 固定位置截取:这种方法通常基于起始位置和结束位置来获取字符串的一部分。例如,在Python中,你可以使用切片操作符`[start:end]`来截取字符串,...

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

    总之,处理中英混合字符串,特别是涉及中文截取时,需要理解字符编码,尤其是Unicode的工作原理,以及如何在不同编码间进行转换。通过适当的方法,我们可以确保截取的字符串保持完整性和可读性,避免在处理多语言...

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

    ### C#字符串截取固定长度的方法 在C#编程语言中,经常需要处理字符串操作,其中一个常见的需求就是根据特定的长度来截取字符串。本文将详细介绍如何使用C#实现字符串的固定长度截取,并深入探讨背后的原理和技术...

    截取字符串

    这个小demo展示了如何在不同的编程环境中实现字符串截取,同时也涉及到字符串的空格处理。接下来,我们将深入探讨这两个主题。 首先,让我们讨论字符串截取。在大多数编程语言中,都有内置的函数或方法来实现字符串...

    php字符串截取.pdf

    #### 二、GB2312中文字符串截取 **1.1 GB2312字符串截取函数** ```php function mysubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; for ($i = 0; $i $strlen; $i++) { if (ord(substr($...

    java中截取带汉字的字符串

    ### Java中截取带汉字的字符串 在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取...通过以上方法,我们可以在Java中有效地处理包含中文字符的字符串截取问题,避免出现乱码等情况。

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

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

    asp.net截取字符串方法

    以上介绍的方法可以有效地解决ASP.NET中字符串截取时出现的乱码问题,特别是在处理包含中文或其他多字节字符的字符串时非常有用。通过对字节数组的精确控制,实现了字节级别的截取功能,确保了截取结果的准确性。...

    字符串 截取

    根据给定文件的信息,本文将围绕“字符串截取”这一主题进行深入探讨,重点在于如何在Java环境下实现对包含中文字符的字符串进行精确截取,同时确保不会出现半个汉字的情况。 ### 字符串截取的基本概念 在计算机...

    java编写一个截取字符串的函数,输入为一个字符串和字节数.docx

    在 Java 中,字符串截取是一种常见的操作,特别是在处理汉字和 Unicode 字符时。下面是关于 Java 字符串截取函数的知识点: 字符串截取函数 Java 中有多种方式可以实现字符串截取,包括使用 `substring`、`split` ...

    中文字符串截取(支持各种编码格式)底层实现源码

    在IT领域,字符串处理是日常开发中的重要环节,特别是在处理包含中文字符的字符串时,由于中文字符...通过学习和理解这些源码,开发者可以更好地掌握中文字符串截取的底层原理,提升在处理复杂字符串场景下的编程能力。

    JavaScript截取中文字符串

    本文将详细介绍一个专门用于处理中文字符串截取的JavaScript函数,该函数能够根据字符的实际编码长度来精确控制截取的长度。 #### 二、关键概念解析 ##### 2.1 字符串截取 字符串截取是指从一个较长的字符串中...

    字符串截取(按字节)

    在计算机编程中,字符串处理是一项基本而关键的任务,尤其在处理非英文字符时,如何精确地按照字节进行字符串截取变得尤为重要。本文将深入探讨一种按字节截取字符串的方法,并通过分析一个具体的Java代码示例来解释...

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

    给定代码片段展示了一种自定义的字符串截取方法`getSubString()`,它考虑了中文字符的特殊性。该方法接受四个参数:原字符串`str`、起始位置`start`、截取长度`length`和额外的字符串`more`。其中,`more`参数用于当...

    PHP中如何截取中文字符串

    在PHP中处理中文字符串截取是一项常见的...PHP的mbstring扩展提供了强大且安全的方法来处理多字节字符,确保了中文字符串截取的准确性。在编写代码时,要时刻关注字符串的编码类型,以避免出现乱码或截取错误的情况。

    Golang中文字符串截取函数实现原理

    在上述内容中,提到了使用[]rune来处理中文字符串截取问题。具体操作步骤包括:首先将原始字符串转换为[]rune类型,此时字符串中的每一个中文字符都对应着一个或多个rune值;然后基于rune值进行截取,这样无论截取的...

    impala中substr()截取中文字符串乱码的问题

    通过这种方式,我们能够克服Impala原生`substr()`函数在处理中文字符串时的局限性,实现更精确且无乱码的字符串截取操作。这种方法不仅适用于中文字符,还可以扩展到其他多字节字符集,如日文或韩文等。同时,这也是...

Global site tag (gtag.js) - Google Analytics