/**
* 从原字符串根据最大字节长度以及需要保留的字节长度,获取子字符串,“最大字节长度”用于判断原字符串字节长度是否超过该长度,如果超过则截取“需要保留的字节长度”子串并补充“...”返回,如果未超过,则直接返回原字符串;<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秒)完成所需的操作。这种方法...
以上三种方法分别适用于不同的字符串截取场景,其中 `GetFirstString` 方法考虑了中文字符的特殊性,而 `StringbSubString` 和 `CutString` 方法则更侧重于英文和数字字符的处理。在实际开发过程中,可以根据具体的...
截取字符串通常有两种主要方法:固定位置截取和指定长度截取。 1. 固定位置截取:这种方法通常基于起始位置和结束位置来获取字符串的一部分。例如,在Python中,你可以使用切片操作符`[start:end]`来截取字符串,...
总之,处理中英混合字符串,特别是涉及中文截取时,需要理解字符编码,尤其是Unicode的工作原理,以及如何在不同编码间进行转换。通过适当的方法,我们可以确保截取的字符串保持完整性和可读性,避免在处理多语言...
### C#字符串截取固定长度的方法 在C#编程语言中,经常需要处理字符串操作,其中一个常见的需求就是根据特定的长度来截取字符串。本文将详细介绍如何使用C#实现字符串的固定长度截取,并深入探讨背后的原理和技术...
这个小demo展示了如何在不同的编程环境中实现字符串截取,同时也涉及到字符串的空格处理。接下来,我们将深入探讨这两个主题。 首先,让我们讨论字符串截取。在大多数编程语言中,都有内置的函数或方法来实现字符串...
#### 二、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中有效地处理包含中文字符的字符串截取问题,避免出现乱码等情况。
在Delphi编程环境中,处理中文和英文混合的字符串截取是一项常见的任务,特别是在涉及到文本处理、数据解析或者用户界面展示时。由于Unicode编码的存在,中文字符通常占据两个字节,而英文字符则占据一个字节,这就...
以上介绍的方法可以有效地解决ASP.NET中字符串截取时出现的乱码问题,特别是在处理包含中文或其他多字节字符的字符串时非常有用。通过对字节数组的精确控制,实现了字节级别的截取功能,确保了截取结果的准确性。...
根据给定文件的信息,本文将围绕“字符串截取”这一主题进行深入探讨,重点在于如何在Java环境下实现对包含中文字符的字符串进行精确截取,同时确保不会出现半个汉字的情况。 ### 字符串截取的基本概念 在计算机...
在 Java 中,字符串截取是一种常见的操作,特别是在处理汉字和 Unicode 字符时。下面是关于 Java 字符串截取函数的知识点: 字符串截取函数 Java 中有多种方式可以实现字符串截取,包括使用 `substring`、`split` ...
在IT领域,字符串处理是日常开发中的重要环节,特别是在处理包含中文字符的字符串时,由于中文字符...通过学习和理解这些源码,开发者可以更好地掌握中文字符串截取的底层原理,提升在处理复杂字符串场景下的编程能力。
本文将详细介绍一个专门用于处理中文字符串截取的JavaScript函数,该函数能够根据字符的实际编码长度来精确控制截取的长度。 #### 二、关键概念解析 ##### 2.1 字符串截取 字符串截取是指从一个较长的字符串中...
在计算机编程中,字符串处理是一项基本而关键的任务,尤其在处理非英文字符时,如何精确地按照字节进行字符串截取变得尤为重要。本文将深入探讨一种按字节截取字符串的方法,并通过分析一个具体的Java代码示例来解释...
给定代码片段展示了一种自定义的字符串截取方法`getSubString()`,它考虑了中文字符的特殊性。该方法接受四个参数:原字符串`str`、起始位置`start`、截取长度`length`和额外的字符串`more`。其中,`more`参数用于当...
在PHP中处理中文字符串截取是一项常见的...PHP的mbstring扩展提供了强大且安全的方法来处理多字节字符,确保了中文字符串截取的准确性。在编写代码时,要时刻关注字符串的编码类型,以避免出现乱码或截取错误的情况。
在上述内容中,提到了使用[]rune来处理中文字符串截取问题。具体操作步骤包括:首先将原始字符串转换为[]rune类型,此时字符串中的每一个中文字符都对应着一个或多个rune值;然后基于rune值进行截取,这样无论截取的...
通过这种方式,我们能够克服Impala原生`substr()`函数在处理中文字符串时的局限性,实现更精确且无乱码的字符串截取操作。这种方法不仅适用于中文字符,还可以扩展到其他多字节字符集,如日文或韩文等。同时,这也是...