Java中的string实际长度详解(代码点和代码单元)
2017-09-06 14:44
579 查看
关于代码点和代码单元的介绍在前面的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);
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);
相关文章推荐
- Java中可变长度参数代码详解
- java的堆,栈,静态代码区 详解 String原理
- java 将byte中的有效长度转换为String的实例代码
- java面试题:string,stringbuffer详解(通过代码说明)
- Java String字符串最常见方法速查手册+代码示例详解
- Java 核心技术5NOTE String char 代码单元 代码点 操作
- 关于Java核心技术书中的代码点和代码单元是怎么理解的呢?
- Java数组String []的用法详解
- Java中的String数据类型 详解
- Java中的Drag and Drop详解与代码示例
- Java生成规定长度生成条数的随机数代码
- C++ 的string 与java的String中的汉字长度
- java中String s=”abc“及String s=new String("abc")详解
- 关于Java核心技术书中的代码点和代码单元是怎么理解的呢?
- Java String常用方法详解
- Java String常用方法详解
- JasperReport初级教程(2.0.3)调用Java代码_图文详解_绝对原创
- Java中求String和Array的长度(length)
- java中String s=”abc“及String s=new String("abc")详解
- Java单个方法代码长度不能多于65535字节