gpt4 book ai didi

java - 如何检测文本中使用了哪种Apple Emoji?

转载 作者:行者123 更新时间:2023-12-01 11:06:37 26 4
gpt4 key购买 nike

我有一个 WhatsApp 聊天的 txt 文件,我想使用 Java 解析它。

但是所有使用的表情符号在txt文件中都显示为“😂”。我想尝试找出如何了解实际使用的表情符号并尝试了以下方法:

‬System.out.print( "\\u" + Integer.toHexString(line.charAt(i) | 0x10000).substring(1) );

但它显示错误的 unicode,例如\ud83d 等。

我也得到了这个列表,但我不知道到底如何使用它: http://grumdrig.com/emoji-list/#

最佳答案

\uD83D 是与 \uDE04 代理配对的一部分,它实际上被一起编码以生成 \u0001F604

U+1F604 (U+D83D U+DE04) 生成张开嘴巴和微笑的眼睛的笑脸表情符号 -> 😄

这个Gist (mranney/emoji_sad.txt)可能是弄清楚如何解析文件的起点。

示例

您可以移植其中的一些 JavaScript到 Java。

import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Main {
public static void main(String[] args) {
long codepoint = 0x1f600;
int[] pair = findSurrogatePair(codepoint);

System.out.printf("%s -> %s%n", toHex(codepoint),
IntStream.of(pair).mapToObj(v -> toHex(v))
.collect(Collectors.joining(" + ")));
}

/**
* Assumes point > 0xFFFF
* <p>
*
* @param point Unicode codepoint to convert to surrogate pairs.
* @return Returns the surrogate pairing for the input code-point.
*/
public static int[] findSurrogatePair(final long point) {
long offset = point - 0x10000;

int lead = (int) (0xD800 + (offset >> 10));
int trail = (int) (0xDC00 + (offset & 0x3FF));

return new int[] { lead, trail };
}

public static String toHex(Number value) {
return String.format("\\u%X", value);
}
}

输出

\u1F600 -> \uD83D + \uDE00

关于java - 如何检测文本中使用了哪种Apple Emoji?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32885707/

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