按字节长度截取字符串

有时我们需要按照字节长度来截取字符串,但是又不希望把中文给截取散。下面提供一下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;
}

待更新...

猜你喜欢

转载自www.cnblogs.com/beiifeng/p/9945626.html
今日推荐