我知道,一个中文等于两个字符,英文等于一个字符。
问题:判断字符串字符的长度,截取字符串字符小于20的字符串,怎么实现代码逻辑呢?
可以使用字符串的length属性获取字符串的长度,如果字符串长度>20就调用字符串的substring (0, 20)方法,否则返回原字符串,代码示例
public String getSubString(String str) {
return str != null && str.length > 20 ? str.substring(0, 20) : str;
}
那你得去判断是否是中文,可以通过阿斯科码值去判断,大于127的就是中文,从而获取你的长度,然后截取的时候再把中文的长度考虑进去,不能直接按照length去获取长度
int len = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) > 127) {
len += 2;
} else {
len += 1;
}
}