java - java中如何从另一个字符中获取一个字符

标签 java

假设A的unicode是\u9876。我想得到A.之后的7个字符,即H。 有没有办法得到 do (A's unicode ) + 7 然后将其转换为 char。

最佳答案

这篇文章不是答案,而是一篇“困惑清理”文章。

首先,Unicode代码点的范围是从U+0000到U+10FFFF;在所有这个范围内,某些代码点实际上是无效的。

Java 的 char 本质上是一个 UTF-16 代码单元。对于基本多语言平面之外的 Unicode 码位,即 U+FFFF 以上,需要两个字符来编码一个码位;请参阅Character.toChars() 。对于 BMP 内部的代码点,Unicode 和 char 之间存在一对一的映射。

除此之外,尽管 char 具有特殊的作用,但它是一种数字类型;它也是Java中唯一的无符号数字类型。您可以对其使用算术运算,对于 BMP 内的代码点,将 7 添加到 char(即“\u9876”)将得到代码点“\u9883”。

但考虑到上述情况,这是一个危险的举动......

(fwiw,在 BMP 之上,Character.toChars() 将返回一个“字符对”;返回数组的第一个元素将是前导代理,第二个元素将是Trail 代理;Java API 仍然使用旧的 Unicode 术语,并分别将它们称为“高”和“低”代理。有关更多详细信息,请参阅 Wikipedia article on UTF-16 ,它很好地解释了什么是什么)

关于java - java中如何从另一个字符中获取一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23863660/

相关文章:

java - 无法将 GridView 内的 ImageView 设置为从 Drawable 转换的 Bitmap

java - 是否可以使用 .txt 或 .xml 文件创建带有参数的枚举?

java - 是否可以在 Java 中找到非原始变量的地址?

java - 有没有一种快速方法可以从另一个数组创建返回码数组?

java - 将带有 `sort` 的 Java `? super T` 签名转换为 Scala(泛型)

java - 如何重命名子菜单项?

java - "Mapping keys are not allowed here"当我在 yaml 文件中使用 '?' 字符时。我怎样才能使程序可以使用 '?' 字符?

java - Java中如何从数组中删除一个对象?

java - 方向更改时 fragment 重新启动

java - Android:使用从 InstrumentationTestCase 中的 UiAutomation.executeShellCommand() 返回的 ParcelFileDescriptor