前段时间接到一个需求,里面有要求一个字段中的字节数上限是4000字节,如果超出会出问题,需要判断有没有超出字节数,然后给前台提示超出,下面是方法:
public static String subStr(String str, int subSLength) {
String subStr ="";
try {
if (str == null) {
return "";
}else{
int tempSubLength = subSLength;//截取字节数
subStr = str.substring(0, str.length());
int subStrByetsL = subStr.getBytes("GBK").length;//截取子串的字节长度
// 说明截取的字符串中包含有汉字
while (subStrByetsL > tempSubLength){
int subSLengthTemp = --subSLength;
subStr = str.substring(0, subSLengthTemp>str.length() ? str.length() : subSLengthTemp);
subStrByetsL = subStr.getBytes("GBK").length;
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
return subStr;
}
public static void main(String[] args) throws Exception {
String a = "12w有法可依23,34--无法无天";
int length = 8;
System.out.println("截取字符串'"+a+"'字节数为"+length+"的字符串是:"+subStr(a,length));
}
控制台输出结果:截取字符串’12w有法可依23,34–无法无天’字节数为8的字符串是:12w有法
备注:这个编码格式可以修改的,这里用的是GBK,可以改成utf-8或者其他的编码格式,因为不同的编码格式字符占用的字节数不同,看需求。