java中判断字符串实际长度(中文2个字符,英文1个字符)的方法,包含中英文符号

文章介绍了在Java中如何准确计算字符串的实际长度,包括中文字符(每个占2个字节)和英文字符(每个占1个字节)以及中英文符号。方法是通过遍历字符串,根据字符转化为字节的长度来判断。提供的测试代码显示了这种方法能正确计算出含有中文和符号的字符串的字节长度。

java中判断字符串实际长度(中文2个字符,英文1个字符)的方法,包含中英文符号

介绍

数据库中很多字段都会限制长度,为了方便用户使用,在前端界面给出限制长度的提示,看网上很多写的获取字符串长度都没有包含中英文符号的,导致获取到的长度不准确。

Java中判断字符串的编码有两种思路:
1、根据byte的长度判断,英文的字母和标点符号都是一个byte,且值在0-255之间
2、根据中文的Unicode取值范围判断,这个就是把所有的范围都包含,才能判断正确,参考unicode中文范围

下面主要用第一种方式实现

测试代码

/**
 * 测试字符串字符长度
 */
public static void main(String[] args) {
	String str = "(集2)上药华,西(四川),";
    System.out.println("字符串 \"" + str + "\", 字符串长度为:" + str.length()
            + " ,实际长度为:" + getStringLengthByByte(str));
}

/**
 * 返回字符串的实际长度
 */
public static int getStringLengthByByte(String value) {
	if (StringUtils.isEmpty(value)) {
        return 0;
    }
    int valueLength = 0;
    for (int i=0; i < value.length(); i++) {
        char temp = value.charAt(i);
        if ((temp + "").getBytes().length == 1) {
            valueLength += 1;
        } else {
            valueLength += 2;
        }
    }
    return valueLength;
} 

输出结果

字符串 "(集2)上药华,西(四川),", 字符串长度为:14 ,实际长度为:24

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值