1. 程式人生 > >按位元組長度擷取字串

按位元組長度擷取字串

有時我們需要按照位元組長度來擷取字串,但是又不希望把中文給擷取散。下面提供一下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;
}

 

 

 

待更新...