说明
有时候,需要对字符串长度进行限制,如果使用 Validate 中的 @Length(max=100) 方式进行限制校验,此时每个字符都算作一个长度。
如果想要自定义字符长度的计算,例如:每个中文算作一个字符,数字、英文算作0.5个字符,就需要手动定义。
可以使用下面的方式。
/**
* 计算字符串内容字符长度
* 一个中文相当于两个英文
*/
public Float calcCharacterLength(String checkStr) {
try {
if (null == checkStr || checkStr.length == 0) {
return 0;
}
String newString = new String(checkStr.getBytes("GB2312"), StandardCharsets.ISO_8859_1);
float strLen = (float) (newString.length() / 2.0);
return strLen ;
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}