gpt4 book ai didi

java - 给定 Unicode 代码点的编号,如何获取该字符的 String 或 CharSequence 对象

转载 作者:行者123 更新时间:2023-12-01 18:17:01 24 4
gpt4 key购买 nike

我看过有关在 Java 中获取 Unicode 字符的代码点编号的问答。例如,问题 How can I get a Unicode character's code?

但我想要相反的结果:给定一个整数,如何获取分配给该 code point 的该字符的文本数量?

char 原始数据类型没有用处,仅限于 Basic Multilingual Plane Unicode 字符集。该平面大约代表 Unicode 中定义的前 64,000 个字符。但 Unicode 已增长近一倍,现已定义超过 113,000 个字符。分配给字符的数量超过一百万。基于16-bitschar 的范围仅限于 64K,远远不够。

两者CharacterString类提供方法 codePointAt检查字符并返回表示 Unicode 中分配的代码点的 int。我正在寻找相反的东西。

➥ 给定一个 int,如何获取 Character 的对象, String ,或 CharSequence 的某些实现然后我可以加入其他文本吗?

在编写字符串文字时,我们可以使用带有反斜杠和 u 的 Unicode 转义序列。但我对使用整数变量感兴趣,对 Unicode 字符进行软编码而不是硬编码。

最佳答案

tl;博士

String s = Character.toString( 128_567 ) ;

😷

详细信息

您要求提供 CharacterString 对象或 CharSequence 的某些实现。

角色

Character 类实际上是 legacy ,一个简单的围绕原始 char 类型的对象包装器。 char 类型也是传统类型,在内部定义为仅限于前 64K Unicode 代码点的 16 位数字。 Unicode 现在的代码点数量是分配给字符的代码点数量的两倍多,因此 char 无法表示大多数字符。

因此我们无法为 Basic Multilingual Plane 之外的字符实例化 Character 对象。字符集。因此,作为一种解决方法,Character.toString( int ) 会生成一个包含单个字符的 StringString 可以处理任何和所有 Unicode 字符,而 Character 则不能。

字符串 🡄 Character.toString( int )

获得String包含由 int 确定的单个字符的对象,将 int 传递给 Character.toString() .

作为示例,我们使用 FACE WITH MEDICAL MASK ,一个表情符号字符,位于 U+1F637 (十进制:128,567)。

// -----|  input  |----------------
String input = "😷" ; // FACE WITH MEDICAL MASK at code point U+1F637 (decimal: 128,567).
int codePoint = input.codePointAt( 0 ) ; // Returns 128,567.
System.out.println( "codePoint : " + codePoint ) ;

codePoint : 128567

将该 int 原始变量转换为 String

// -----|  String  |----------------
String output = Character.toString( codePoint ) ; // Pass an `int` primitive integer number.
System.out.println( "output : " + output ) ;

output : 😷

或者使用文字整数。

String output2 = Character.toString( 128_567 ) ;      // Pass an integer literal.
System.out.println( "output2 : " + output2 ) ;

output2 : 😷

查看此code run live at IdeOne.com .

字符序列

上面的代码有效,如 StringCharSequence 的实现.

CharSequence cs = Character.toString( 128_567 ) ;     // Returns a `String` which is a `CharSequence`. 

appendCodePoint

StringBuilder类提供了一个方法appendCodePoint通过指定的 Unicode 代码点编号添加字符。 Ditto对于线程安全StringBuffer .

关于java - 给定 Unicode 代码点的编号,如何获取该字符的 String 或 CharSequence 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60347814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com