文档

Java™ 教程
隐藏目录
字符和字符串API
目录: 国际化
课程: 使用文本
章节: 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) 将指定的代理对转换为其补充代码点值。
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。

字符类中的验证和映射方法

之前使用char原始数据类型的一些方法,比如isLowerCase(char)isDigit(char),已被支持补充字符的方法所取代,如isLowerCase(int)isDigit(int)。之前的方法仍然可以使用,但不适用于补充字符。为了创建一个全球应用并确保您的代码与任何语言无缝配合,建议使用这些方法的新形式。

请注意,出于性能原因,大多数接受码点的方法不会验证码点参数的有效性。您可以使用isValidCodePoint方法进行验证。

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

isValidCodePoint(int codePoint)isSupplementaryCodePoint(int codePoint)isHighSurrogate(char)charisLowSurrogate(char)charisSurrogatePair(char high, char low)codePointCount(CharSequence, int, int)
codePointCount(char[], int, int)CharSequencecharisLowerCase(int)
isUpperCase(int)isDefined(int)isJavaIdentifierStart(char)
isJavaIdentifierStart(int)isLetter(int)
isDigit(int)
isLetterOrDigit(int)getDirectionality(int)Character.UnicodeBlock.of(int codePoint)null

String类中的方法

StringStringBufferStringBuilder类也有构造函数和方法可用于处理补充字符。下表列出了一些常用的方法。有关可用API的完整列表,请参阅StringStringBufferStringBuilder类的javadoc。

String(int[] codePoints, int offset, int count)StringString.codePointAt(int index)
StringBuffer.codePointAt(int index)
StringBuilder.codePointAt(int index)String.codePointBefore(int index)
StringBuffer.codePointBefore(int index)
StringBuilder.codePointBefore(int index)String.codePointCount(int beginIndex, int endIndex)
StringBuffer.codePointCount(int beginIndex, int endIndex)
StringBuilder.codePointCount(int beginIndex, int endIndex)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)

上一页:辅助字符作为替代字符
下一页:示例用法