Java 用表情符号替换文字

Java replace text with emoji

我制作了这个 class 可以将文本替换为表情符号。目前代码运行良好,但表情符号的外观不太正确。

他们是这样的:

但我更喜欢这样:

我尝试了多种不同的代码格式,但似乎没有任何效果。也许我搜索的东西不对?

我的class:

package user;

import java.util.HashMap;
import java.util.Map;

public class EmojiReplacer {

    private final Map<String, Integer> emojis = new HashMap<String, Integer>() {{
        put(":)", 0x1F60A);
        put(":d", 0x1F604);
        put(";)", 0x1F609);
        put(":o", 0x1F62E);
        put(":p", 0x1F60B);
        put(":$", 0x1F633);
        put(":(", 0x1F615);
        put(":'(", 0x1F625);
        put(":|", 0x1F610);
        put(">:)", 0x1F608);
        put(">:(", 0x1F621);
        put(":]", 0x1F60F);
        put("<3", 0x2764);
    }};

    public String replaceString(String message) {
        String[] messagePieces = message.split("\s+");
        for (int i = 0; i < messagePieces.length; i++) {
            if (emojis.containsKey(messagePieces[i])) {
                messagePieces[i] = new String(Character.toChars(emojis.get(messagePieces[i])));
            }
        }
        return String.join(" ", messagePieces);
    }
}

我的猜测是问题出在为您呈现表情符号,而不是您正在呈现的文本字符串。换句话说,您的代码运行良好。

我只是 运行 你的代码是这样的:

public static void main(String[] args) {
    EmojiReplacer test = new EmojiReplacer();
    System.out.println(test.replaceString(":) :d >:) :$"));
}

我明白了:

   

在我的 IntelliJ 输出 window 和此处看起来都不错。我在 Mac.

什么是使用您的代码生成的字符串,并为您生成实际的视觉表情符号?由于浏览器显然可以呈现它们,您是否尝试过复制您认为看起来不对的表情符号,并将它们粘贴到您的浏览器中,比如粘贴到您的消息中。您显示的不良表情符号示例似乎是屏幕截图,而不是浏览器呈现的实际表情符号。