StringTrimUtils,使用charArray,Java内部使用unicode,不用在意编码
java 代码
-
-
-
- public class StringTrimUtils {
-
-
-
-
-
-
-
-
- public static String trim(String str, int specialCharsLength) {
- if (str == null || "".equals(str) || specialCharsLength < 1) {
- return "";
- }
- char[] chars = str.toCharArray();
- int charsLength = getCharsLength(chars, specialCharsLength);
- return new String(chars, 0, charsLength);
- }
-
-
-
-
-
-
-
- private static int getCharsLength(char[] chars, int specialCharsLength) {
- int count = 0;
- int normalCharsLength = 0;
- for (int i = 0; i < chars.length; i++) {
- int specialCharLength = getSpecialCharLength(chars[i]);
- if (count <= specialCharsLength - specialCharLength) {
- count += specialCharLength;
- normalCharsLength++;
- } else {
- break;
- }
- }
- return normalCharsLength;
- }
-
-
-
-
-
-
- private static int getSpecialCharLength(char c) {
- if (isLetter(c)) {
- return 1;
- } else {
- return 2;
- }
- }
-
-
-
-
-
-
-
- private static boolean isLetter(char c) {
- int k = 0x80;
- return c / k == 0 ? true : false;
- }
- }
SubString,网上找到的代码,加上了GBK处理,在UTF8等编码状态下也无问题
java 代码
- import java.io.UnsupportedEncodingException;
-
- public class SubString {
-
-
-
-
-
-
-
- public static boolean isLetter(char c) {
- int k = 0x80;
- return c / k == 0 ? true : false;
- }
-
-
-
-
-
-
-
- public static int length(String s) {
- if (s == null)
- return 0;
- char[] c = s.toCharArray();
- int len = 0;
- for (int i = 0; i < c.length; i++) {
- len++;
- if (!isLetter(c[i])) {
- len++;
- }
- }
- return len;
- }
-
-
-
-
-
-
-
-
-
-
- public static String substring(String origin, int len,String c) {
- if (origin == null || origin.equals("") || len < 1)
- return "";
- byte[] strByte = new byte[len];
- if (len > length(origin)) {
- return origin+c;
- }
- try {
- System.arraycopy(origin.getBytes("GBK"), 0, strByte, 0, len);
- int count = 0;
- for (int i = 0; i < len; i++) {
- int value = (int) strByte[i];
- if (value < 0) {
- count++;
- }
- }
- if (count % 2 != 0) {
- len = (len == 1) ? ++len : --len;
- }
- return new String(strByte, 0, len, "GBK")+c;
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException(e);
- }
- }
-
- }
分享到:
相关推荐
"截取指定长度的字符串"这个主题涉及到的是如何从一个字符串中提取出特定长度的部分。这在处理用户输入、数据展示、信息提取等多个场景中都非常常见。接下来,我们将深入探讨这个知识点。 首先,让我们明确什么是...
### C#字符串截取固定长度的方法 在C#编程语言中,经常需要处理字符串操作,其中一个常见的需求就是根据特定的长度来截取字符串。本文将详细介绍如何使用C#实现字符串的固定长度截取,并深入探讨背后的原理和技术...
以上三种方法分别适用于不同的字符串截取场景,其中 `GetFirstString` 方法考虑了中文字符的特殊性,而 `StringbSubString` 和 `CutString` 方法则更侧重于英文和数字字符的处理。在实际开发过程中,可以根据具体的...
在Delphi编程环境中,处理中文和英文混合的字符串截取是一项常见的任务,特别是在涉及到文本处理、数据解析或者用户界面展示时。由于Unicode编码的存在,中文字符通常占据两个字节,而英文字符则占据一个字节,这就...
### 高效中英文字符串截取方法 #### 知识点概述 本文将详细介绍一种用于高效截取中英文混合字符串的方法。该方法适用于处理大量数据(例如10万条记录),能够在极短的时间内(例如1秒)完成所需的操作。这种方法...
这个示例首先将UTF-8字符串转换为宽字符串,然后遍历每个字符,如果遇到非字母字符(可能是汉字),则计算其字节长度,并相应调整截取位置。最后,将截取后的宽字符串再转换回UTF-8。 在实际项目中,可能还需要考虑...
#### 二、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 中,字符串截取是一种常见的操作,特别是在处理汉字和 Unicode 字符时。下面是关于 Java 字符串截取函数的知识点: 字符串截取函数 Java 中有多种方式可以实现字符串截取,包括使用 `substring`、`split` ...
根据给定文件的信息,本文将围绕“字符串截取”这一主题进行深入探讨,重点在于如何在Java环境下实现对包含中文字符的字符串进行精确截取,同时确保不会出现半个汉字的情况。 ### 字符串截取的基本概念 在计算机...
本文将详细介绍一个专门用于处理中文字符串截取的JavaScript函数,该函数能够根据字符的实际编码长度来精确控制截取的长度。 #### 二、关键概念解析 ##### 2.1 字符串截取 字符串截取是指从一个较长的字符串中...
首先,理解为什么需要按照字节长度而不是字符长度截取字符串。在处理非ASCII字符(如中文、日文等)时,一个字符可能占用多个字节。如果单纯按字符长度截取,可能会导致截取到半字符,从而破坏字符串的读取。因此,...
为了更好地解决中文字符串截取问题,可以自定义一个函数`StrByteLeft()`来实现更精确的截取。 1. **函数定义**: ```vb Function StrByteLeft(str, num) Dim tmpStr, flag flag = 0 tmpStr = "" If (Len("") ...
在ASP.NET开发中,有时我们需要对字符串进行截取操作,特别是当涉及到多字节字符(如中文)时,简单的字符串截取可能会导致乱码问题。本文将详细介绍一种使用字节精确计算的ASP.NET字符串截取方法,并通过具体的代码...
在处理这类问题时,普通的字符串截取函数,如`Left()`,无法很好地处理中文字符,因为中文字符在计算长度时通常被视为两个英文字符的宽度。本文将详细介绍如何在ASP中正确地截取中英文混合的字符串,并提供三个相关...
在上述内容中,提到了使用[]rune来处理中文字符串截取问题。具体操作步骤包括:首先将原始字符串转换为[]rune类型,此时字符串中的每一个中文字符都对应着一个或多个rune值;然后基于rune值进行截取,这样无论截取的...
通过上述分析可以看出,`getStr` 方法提供了一种有效的解决中文字符串截取问题的方法。它利用了正则表达式的强大功能来识别并替换中文字符,进而实现了正确的长度计算。不过需要注意的是,这种方法在实际应用中可能...
给定代码片段展示了一种自定义的字符串截取方法`getSubString()`,它考虑了中文字符的特殊性。该方法接受四个参数:原字符串`str`、起始位置`start`、截取长度`length`和额外的字符串`more`。其中,`more`参数用于当...
1. **编写Java代码**:首先,我们需要编写一个Java类,继承`ImpalaUdf`接口,实现自定义的字符串截取逻辑。这个类应该包含一个方法,接收字符串、起始位置和长度作为参数,返回截取后的字符串。在处理中文字符时,...
3. **自定义截取逻辑**:由于标准的字符串截取方法(如`substring()`)不考虑字符的实际字节数,所以在处理包含中文的字符串时,可能需要实现自定义的截取逻辑,确保截取后的字符串不会出现乱码。 ### 示例代码解析...