码迷,mamicode.com
首页 > 其他好文 > 详细

按字节长度截取字符串

时间:2018-11-12 12:05:25      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:bsp   return   需要   setname   ret   exception   substring   upper   sub   

有时我们需要按照字节长度来截取字符串,但是又不希望把中文给截取散。下面提供一下utf-8的截取方法:

/**
* 按字节长度截取字符串
* @param orgin 需要截取的字符串
* @param length 字节长度
* @param charsetName 编码
* @return 截取后的字符串
*/
public static String subStringb(String orgin, int length, String charsetName) {

String result = orgin;
try {
byte[] bs = orgin.getBytes(charsetName);
if (length >= bs.length) {
return orgin;
}
if ("UTF8".equals(charsetName.toUpperCase()) || "UTF-8".equals(charsetName.toUpperCase())) {

// utf8 encoding
// 0000 - 007F 0xxxxxxx
// 0080 - 07FF 110xxxxx 10xxxxxx
// 0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
while (length > 0) {
if ((bs[length] | 0x7F) == 0x7F) {
break;
}
if ((bs[length] & 0xC0) == 0xC0) {
break;
}
if ((bs[length] & 0xE0) == 0xE0) {
break;
}
length--;
}
}
result = new String(bs, 0, length, charsetName);
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
return result;
}

 

 

 

待更新...

按字节长度截取字符串

标签:bsp   return   需要   setname   ret   exception   substring   upper   sub   

原文地址:https://www.cnblogs.com/beiifeng/p/9945626.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!