說(shuō)明
有時(shí)候,需要對(duì)字符串長(zhǎng)度進(jìn)行限制,如果使用 Validate 中的 @Length(max=100) 方式進(jìn)行限制校驗(yàn),此時(shí)每個(gè)字符都算作一個(gè)長(zhǎng)度。
如果想要自定義字符長(zhǎng)度的計(jì)算,例如:每個(gè)中文算作一個(gè)字符,數(shù)字、英文算作0.5個(gè)字符,就需要手動(dòng)定義。
可以使用下面的方式。
/**
* 計(jì)算字符串內(nèi)容字符長(zhǎng)度
* 一個(gè)中文相當(dāng)于兩個(gè)英文
*/
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;
}