Java 代码点与代码单元 - Java 编程入门

Java 字符串由 char 序列组成,char 类型是一个采用 UTF-16 编码表示 Unicode 代码点的代码单元。大多数常用的 Unicode 字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。 length 方法将返回采用 UTF-16 编码表示的给定字符所需的代码单元数量,如下: String greeting = "Hello"; int n = greeting.length(); // n 的值为 5 要想得到实际的长度,即代码点的数量,可以如下调用: int cpCount = greeting.codePointCount(0,greeting.length()); 调用 s.charAt(n) 将返回位置 n 的代码单元。(n 介于 0 ~ s.length() - 1 之间),如下: char first = greeting.charAt(0); //first 的值为 H char last = greeting.charAt(4); //last 的值为 o 要想得到第 i 个代码点,应该使用如下语句: int index = greeting.offsetByCodePoint(0,i); int cp = greeting.codePointAt(index); 使用 UTF-16 编码表示 𝕆 需要两个代码单元,如下: String sentence = "𝕆 is the set of integers."; char ch = sentence.charAt(1); // ch 的值为 𝕆 的第二个代码单元,而不是空格 要想遍历一个字符串,并且依次查看每一个代码点,可以使用如下语句: int cp = sentence.codePointAt(i); if (Character.isSupplementaryCodePoint(cp)) i+=2; else i++; 可以使用如下语句实现回退操作: i--; if (Character.isSurrogate(sentence.charAt(i))) i--; int cp = sentence.codePointAt(i);
Loading...


Run