java截取中英文混杂字符串,原来找的一直存在字符编码问题,所以在网上找到了这个解决方案,亲测可用。
/**
* 截取一段字符的长度(汉、日、韩文字符长度为2),不区分中英文,如果数字不正好,则少取一个字符位
*
* @param str 原始字符串
* @param srcPos 开始位置
* @param specialCharsLength 截取长度(汉、日、韩文字符长度为2)
* @return
*/
public static String cutMultibyte(String str,int specialCharsLength) {
int srcPos = 0;
if (str == null || "".equals(str) || specialCharsLength < 1) {
return "";
}
if(srcPos<0)
{
srcPos=0;
}
if(specialCharsLength<=0)
{
return "";
}
//获得字符串的长度
char[] chars = str.toCharArray();
if(srcPos>chars.length)
{
return "";
}
int charsLength = getCharsLength(chars, specialCharsLength);
return new String(chars, srcPos, charsLength);
}
/**
* 获取一段字符的长度,输入长度中汉、日、韩文字符长度为2,输出长度中所有字符均长度为1
* @param chars 一段字符
* @param specialCharsLength 输入长度,汉、日、韩文字符长度为2
* @return 输出长度,所有字符均长度为1
*/
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;
}
/**
* 获取字符长度:汉、日、韩文字符长度为2,ASCII码等字符长度为1
* @param c 字符
* @return 字符长度
*/
private static int getSpecialCharLength(char c) {
if (isLetter(c)) {
return 1;
} else {
return 2;
}
}
/**
* 判断一个字符是Ascill字符还是其它字符(如汉,日,韩文字符)
*
* @param c 需要判断的字符
* @return 返回true,Ascill字符
*/
public static boolean isLetter(char c) {
int k = 0x80;
return c / k == 0 ? true : false;
}
分享到:
相关推荐
在Java中,字符串的截取可以使用substring方法,但是这种方法不能保证汉字不被截半个,因为它是按照字符的个数来截取的,而中文字符占用两个字节,英文字符占用一个字节。因此,需要使用特殊的方法来截取中英文混合...
### Java中截取带汉字的字符串 在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取这些字符串。如果直接按照字节(byte)来进行分割,很容易导致中文字符被截断一半,从而形成乱码。...
### 高效中英文字符串截取方法 #### 知识点概述 本文将详细介绍一种用于高效截取中英文混合字符串的方法。该方法适用于处理大量数据(例如10万条记录),能够在极短的时间内(例如1秒)完成所需的操作。这种方法...
字符串在各种编程语言中都是基本的数据类型,如Python中的`str`,Java中的`String`,JavaScript中的`String`等。 截取字符串通常有两种主要方法:固定位置截取和指定长度截取。 1. 固定位置截取:这种方法通常基于...
在Delphi编程环境中,处理中文和英文混合的字符串截取是一项常见的任务,特别是在涉及到文本处理、数据解析或者用户界面展示时。由于Unicode编码的存在,中文字符通常占据两个字节,而英文字符则占据一个字节,这就...
本文将深入探讨如何在Java中有效地截取包含中文和英文字符的字符串,并解释给出的代码片段背后的逻辑。 ### Java中英文字符串截取的关键点 1. **字符编码的影响**:中文字符在不同的编码方式下占用的字节数不同。...
可以截取中英文字符串,也可以含有字符,里面有好几个方法 有按字符个数截取 有按字节数来截取不会存在乱码
在 Java 中,字符串截取是一种常见的操作,特别是在处理汉字和 Unicode 字符时。下面是关于 Java 字符串截取函数的知识点: 字符串截取函数 Java 中有多种方式可以实现字符串截取,包括使用 `substring`、`split` ...
在ASP(Active Server Pages)开发中,经常遇到需要处理中英文混合的字符串,尤其是在页面展示时,为了保持布局美观,需要对字符串进行截取。在处理这类问题时,普通的字符串截取函数,如`Left()`,无法很好地处理中文...
SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串
Java 实现中英文混合字符截取方法是指在 Java 编程语言中截取字符串中混合了中英文字符的方法。这种方法主要用于解决在 Java 中截取字符串时遇到的问题,即在截取中英文混合字符串时如何避免汉字被截半个。 在 Java...
题目中的问题聚焦于如何正确地截取一个中英混合的字符串,确保在截取过程中不会将汉字字符截断。这个问题涉及到字符编码、字符串处理以及对Unicode的理解。下面将详细解释相关知识点。 首先,我们要理解在C++中处理...
根据提供的文件信息,本文将详细解释Java中截取字符串的各种方法及其使用场景,并结合部分示例代码进行说明。 ### Java中截取字符串的方法 在Java编程语言中,字符串的处理是一项非常重要的技能,特别是在开发中...
在这个"rf.rar"压缩包中,我们看到涉及到RF字符串处理的三个关键知识点:RF字符串截取、RF字符串比较以及RF字符串切割。 1. RF字符串截取: 正则表达式提供了灵活的字符串截取方式。通过定义匹配模式,可以精确地...
这个方法用来处理java中可能有一些特别的需要,一大串中英文混合,需要中间截断或是中英中间添加一些特别的标识,调用这个方法 第一个参数是要处理的字符串,第二个是要在中英字符中间插入的字符。调用就可以得到想...
给写了2个方法,一个是直接截取单个需要的字符串,比如字符串string a="ab123456",我只需要提取3,那么就是单独截取就可以了,从2开始到4结束就行。 第二个是把所有的符合条件的字符串都截取出来,提取出来,比如...
在编程领域,字符串操作是一项基础且重要的任务,而“截取字符串”是其中的一个关键功能。这个小demo展示了如何在不同的编程环境中实现字符串截取,同时也涉及到字符串的空格处理。接下来,我们将深入探讨这两个主题...
Java中的`String`类提供了多种截取字符串的方法,如`substring()`、`subSequence()`等,但它们都是基于字符(char)而不是字节的。因此,如果我们需要按照字节截取,需要自定义方法来处理。以下是一个简单的示例,...
根据给定文件的信息,我们将深入探讨Java中字符串截取的原理、方法以及在中英文操作系统下的特殊处理。 ### Java字符串截取 #### 原理与实现 在Java中,字符串本质上是一个不可变的字符序列,由`char`类型的数组...
接下来,我们将深入探讨如何在Android和Java中进行字符串截取,以及如何重新组合这些截取的部分。 1. **`substring()` 方法**:这是Java语言中最常用的字符串截取方法。它接受两个参数,第一个参数是起始索引(包含...