文档

Java™ 教程-Java Tutorials 中文版
字符和字符串 API
Trail: Internationalization
Lesson: Working with Text
Section: Unicode

字符和字符串 API

Character 类封装了 char 数据类型。对于 J2SE 版本 5,在 Character 类中添加了许多方法以支持补充字符。此 API 分为两类:在 char 和代码点值之间进行转换的方法,以及验证或映射代码点的有效性的方法。

本节介绍 Character 类中可用方法的子集。有关可用 API 的完整列表,请参阅 Character 类规范。

转换方法和 Character 类

下表包含 Character 类中最有用的转换方法或便于转换的方法。codePointAtcodePointBefore 方法包含在此列表中,因为文本通常位于序列中,例如 String,这些方法可以是用于提取所需的子字符串。

方法 描述
toChars(int codePoint, char[] dst, int dstIndex)
toChars(int codePoint)
将指定的 Unicode 代码点转换为其 UTF-16 表示形式,并将其放在 char 数组中。示例用法:Character.toChars(0x10400)
toCodePoint(char high, char low)
toCodePoint(CharSequence, int)
toCodePoint(char[], int, int)
将指定的参数转换为其补充代码点值。不同的方法接受不同的输入格式。
codePointAt(char[] a, int index)
codePointAt(char[] a, int index, int limit)
codePointAt(CharSequence seq, int index)
返回指定索引处的 Unicode 代码点。第三种方法采用 CharSequence,第二种方法强制索引的上限。
codePointBefore(char[] a, int index)
codePointBefore(char[] a, int index, int start)
codePointBefore(CharSequence seq, int index)
codePointBefore(char[], int, int)
返回指定索引之前的 Unicode 代码点。第三种方法接受 CharSequence,其他方法接受 char 数组。第二种方法强制索引下限。
charCount(int codePoint) 可由单个 char 表示的字符返回值 1。需要两个 char 的补充字符返回值 2。

Character 类中的验证和映射方法

使用 char 基本数据类型的一些先前方法(例如 isLowerCase(char)isDigit(char))被一些方法取代支持补充字符,例如 isLowerCase(int)isDigit(int)。支持前面的方法,但不适用于补充字符。要创建全球应用程序并确保代码与任何语言无缝协作,建议你使用这些方法的较新形式。

请注意,出于性能原因,大多数接受代码点的方法都不会验证代码点参数的有效性。你可以使用 isValidCodePoint 方法实现此目的。

下表列出了 Character 类中的一些验证和映射方法。

方法 描述
isValidCodePoint(int codePoint) 如果代码点在 0x0000 到 0x10FFFF 的范围内(包含),则返回 true。
isSupplementaryCodePoint(int codePoint) 如果代码点在 0x10000 到 0x10FFFF 的范围内(包含),则返回 true。
isHighSurrogate(char) 如果指定的 char 在 \uD800 到 \uDBFF 的高位代理范围内(包含),则返回 true。
isLowSurrogate(char) 如果指定的 char 在 \uDC00 到 \uDFFF 的低位代理范围内(包含),则返回 true。
isSurrogatePair(char high, char low) 如果指定的高和低位代理代码值表示有效的代理对,则返回 true。
codePointCount(CharSequence, int, int)
codePointCount(char[], int, int)
返回 CharSequencechar 数组中的 Unicode 代码点数。
isLowerCase(int)
isUpperCase(int)
如果指定的 Unicode 代码点是小写或大写字符,则返回 true。
isDefined(int) 如果在 Unicode 标准中定义了指定的 Unicode 代码点,则返回 true。
isJavaIdentifierStart(char)
isJavaIdentifierStart(int)
如果允许指定的字符或 Unicode 代码点作为 Java 标识符中的第一个字符,则返回 true。
isLetter(int)
isDigit(int)
isLetterOrDigit(int)
如果指定的 Unicode 代码点是字母,数字,或字母或数字,则返回 true。
getDirectionality(int) 返回给定 Unicode 代码点的 Unicode 方向性属性。
Character.UnicodeBlock.of(int codePoint) 返回表示包含给定 Unicode 代码点的 Unicode 块的对象,如果代码点不是已定义块的成员,则返回 null

String 类中的方法

StringStringBufferStringBuilder 类还具有可与补充字符一起使用的构造函数和方法。下表列出了一些常用方法。有关可用 API 的完整列表,请参阅 StringStringBufferStringBuilder 类的 javadoc。

构造函数或方法 描述
String(int[] codePoints, int offset, int count) 分配一个新的 String 实例,该实例包含 Unicode 代码点数组的子数组中的字符。
String.codePointAt(int index)
StringBuffer.codePointAt(int index)
StringBuilder.codePointAt(int index)
返回指定索引处的 Unicode 代码点。
String.codePointBefore(int index)
StringBuffer.codePointBefore(int index)
StringBuilder.codePointBefore(int index)
返回指定索引之前的 Unicode 代码点。
String.codePointCount(int beginIndex, int endIndex)
StringBuffer.codePointCount(int beginIndex, int endIndex)
StringBuilder.codePointCount(int beginIndex, int endIndex)
返回指定范围内的 Unicode 代码点数。
StringBuffer.appendCodePoint(int codePoint)
StringBuilder.appendCodePoint(int codePoint)
将指定代码点的字符串表示形式追加到序列中。
String.offsetByCodePoints(int index, int codePointOffset)
StringBuffer.offsetByCodePoints(int index, int codePointOffset)
StringBuilder.offsetByCodePoints(int index, int codePointOffset)
返回给定索引偏移给定数量的代码点的索引。

Previous page: Supplementary Characters as Surrogates
Next page: Sample Usage