如何在 Java 字符串中插入表情符号?

2br*_*-2b 5 java string emoji

我正在尝试制作一个打印表情符号的程序。但是,它不会让我在 SDK 中插入表情符号,并且\u不允许足够多的字符来使用表情符号。有没有简单的方法可以做到这一点?

所有在线解决方案似乎都参考了StringBuffer. 有没有办法做到这一点没有StringBuffer?如果没有,我将如何使用它?

Raj*_*jat 10

如果您正在寻找使用 SNS 发送服务器端通知,那么以下工作

String context = "You can eat water too! ";
        context += new String(Character.toChars(0x1F349));
Run Code Online (Sandbox Code Playgroud)

各种表情符号unicode


syn*_*gma 5

这是可以做到不使用StringBuilder,与Unicode代理对

代理字符通常称为代理对。它们是两个字符的组合,包含一个代码点。为了便于检测代理对,Unicode 标准保留了从 U+D800 到 U+DFFF 的范围以供 UTF-16 使用。没有字符分配给此范围内的代码点值。当程序看到落在此范围内的位序列时,它们会立即——压缩!zip!-知道他们遇到了代理对。

这个保留范围由两部分组成:

  • 高代理- U+D800 到 U+DBFF(总共 1,024 个代码点)
  • 低代理— U+DC00 到 U+DFFF(总共 1,024 个代码点)

以下将打印外星外星人表情符号 ():

int[] surrogates = {0xD83D, 0xDC7D};
String alienEmojiString = new String(surrogates, 0, surrogates.length);
System.out.println(alienEmojiString);
System.out.println("\uD83D\uDC7D");   // alternative way
Run Code Online (Sandbox Code Playgroud)

  • 我认为如果它包含对 UTF-16 是什么、为什么 Java 字符串需要它以及为什么表示为 `\uD83D\uDC7D` 的快速解释,这将是一个更好的答案。 (5认同)