按字节长度截取字符串
Posted beiifeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按字节长度截取字符串相关的知识,希望对你有一定的参考价值。
有时我们需要按照字节长度来截取字符串,但是又不希望把中文给截取散。下面提供一下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;
}
待更新...
以上是关于按字节长度截取字符串的主要内容,如果未能解决你的问题,请参考以下文章