Java中的string实际长度详解(代码点和代码单元)

关于代码点和代码单元的介绍在前面的char类型介绍已经做过详细的介绍,现在专门讨论Java中和String有关的代码点和代码单元;Java中的字符串有char序列组成,在前面讲过,char数据类型是一个采用UTF-16编码表示的Unicode代码点的代码单元。我们常用的大多数Unicode字符使用一个代码单元就可以表示,辅助的字符需要两个代码单元表示。

length返回给定的UTF-16编码给定的字符串所需要的代码单元的数量。如下:

String str = "Hello";
int strLength = str.length();
这里得到的是代码单元的数量,要想得到实际的长度,也就是代码点的长度,使用如下代码:

int cpCount = str.codePointCount(0, str.length());
使用codePointCount()方法可以得到实际的长度,为什么会这样了? 因为基本的多语言级别由16个字符组成,也就是一个字符,但是辅助的字符,需要两个代码点,所以使用length等不到辅助字符的实际长度。

那么,要想得到第n位置的代码点,我们需要怎么做了,如下:

int index = str.offsetByCodePoints(0, 3);
int cp = str.codePointAt(index);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程之艺术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值