SubString,
分享于 点击 35944 次 点评:150
SubString,
一.获得字符串长度:
/**
* 获得目标字符串的长度,ascii字符长度为1,其他字符长度为2
* @param str 目标字符串
* @return 返回字符串的长度(汉字占两个字节)
*/
public static int getLengthOfStr(String str) {
return str == null ? 0 : str.replaceAll("[^\\x00-\\xff]", "**")
.length();
}
/**
* 获得目标字符串的长度,ascii字符长度为1,其他字符长度为2
*
* @param str
* 目标字符串
* @return 返回字符串的长度(汉字占两个字节)
*/
public static int getLengthOfStr(String str) {
int length = 0;
if (str != null) {
for (int i = 0, size = str.length(); i < size; i++) {
int ascii = Character.codePointAt(str, i);
if (ascii >= 0 && ascii <= 255) {
length++;
} else {
length += 2;
}
}
}
return length;
}
二.截取指定字节长度的子字符串:
/**
* 从索引0开始截取指定字节长度的字符串
*
* @param str
* 原始字符串
* @param length
* 字节长度
* @return 截后的字符串
*/
public static String subStrOfByteLen(String str, int length) {
if (str == null || length == 0) {
return "";
}
int charLength = 0;
for (int i = 0, size = str.length(); i < size; i++) {
int ascii = Character.codePointAt(str, i);
if (length >= 1 && ascii >= 0 && ascii <= 255) {
length--;
} else if (length >= 2) {
length -= 2;
} else {
charLength = i;
break;
}
if(i == size-1){
charLength = size;
}
}
return str.substring(0, charLength);
}
相关文章
- 暂无相关文章
用户点评