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中英文字符串截取
SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串
delphi 实现截取字符串中中文+英文混合截取,当字符串中包含中文和英文支付时,有时候会将一个中文截取1半,出现乱码。该demo能很好的解决该问题
自己输入一个字符串,字符串中可以包括字符和汉字,截取指定的字符串
主要为大家详细介绍了Java截取中英文混合字符串的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
给写了2个方法,一个是直接截取单个需要的字符串,比如字符串string a="ab123456",我只需要提取3,那么就是单独截取就可以了,从2开始到4结束就行。 第二个是把所有的符合条件的字符串都截取出来,提取出来,比如...
substring截取字符串 substring截取字符串 substring截取字符串 substring截取字符串 substring截取字符串 substring截取字符串 substring截取字符串 substring截取字符串 substring截取字符串 substring截取字符串 ...
在实际工作中经常遇到截取两个相同字符串之间的字符的oracle问题,以下是相关语句
ASP中英文混合字符串的截取 ASP中英文混合字符串的截取
java 字符串截取工具类java 字符串截取工具类
java 字符串截取类,兼容中英文及日韩文字格式
截取含有中英文的字符串,按字节进行截取,当出现汉字时不能截取半个汉字要把汉字补全。
string常用截取字符串方法有很多,但是配合使用以下两种,基本都能满足要求: find(string strSub, npos); find_last_of(string strSub, npos); 其中strSub是需要寻找的子字符串,npos为查找起始位置。找到返回子...
13年(实习期间)飞娱互动有限公司面试游戏开发客户端/服务器端时的面试题的第一道编程题,当时就差这题没做出来,回去后想出来的。 截取一定长度的字符串,保证不把汉字截断。
java字符串截取 - 中英文操作系统处理字符汉字
一个php截取指定字符串之间的字符串的类,介绍一个php截取指定字符串之间的字符串的类,需要的朋友可以自行下载学习使用。
各种java截取字符串方法及参数使用解释说明
[DataGird]如何截取过长的字符串