用适当的java代码替换表情符号

时间:2016-04-22 20:00:56

标签: java emoji

我正在开发一个简单的java程序,可以使用这样的字符串:

  

⛔️✋STOP✋⛔️你违反了法律!但是现在......你

并用适当的java字符替换每个表情符号。 (我不知道该怎么称呼他们)。

以下是一个例子:

汽车表情符号:将替换为:“\ uD83D \ uDE97”。

这允许我有一个字符串,如

"I am a car: \uD83D\uDE97"

在Java源代码中, 让它看起来像这样:

enter image description here

所以问题是,如何在字符串中自动查找某个表情符号(例如,在字符串中查找每个红色汽车表情符号)并将其替换为适当的“Java字符”?

编辑一:

没关系,原来很简单。我可以做到

string.replace("","Java code");

3 个答案:

答案 0 :(得分:2)

您应该使用以下方法:

  

public String replaceAll(String regex,                   字符串替换)

请参阅documentation

示例:

source
.replaceAll("", "value")
.replaceAll("", "nextValue")

更好的方法是使用现有的字符构建地图,并为每个字符进行替换:

Map<String, String> mappedChars = new HashMap<>();
mappedChars.put("A", "valueForA");
mappedChars.put("B", "valueForB");

AtomicReference<String> value = new AtomicReference<>("A and B and C");

mappedChars
        .entrySet()
        .stream()
        .forEach(entry -> value.getAndUpdate(current -> current.replaceAll(entry.getKey(), entry.getValue())));

//valueForA and valueForB and C

答案 1 :(得分:0)

请注意,并非所有编码都可以处理这些字符串。您可以将字符串传递给字节数组,解析它并将其转换回字符串。

答案 2 :(得分:0)

这些是unicode字符。找到它们并替换它们实际上是不同的任务。

查找字符串中的unicode字符是一个困难的前景。一种方法是简单地将indexOf应用于您的字符串以查找unicode字符的开头。

以下是一个相当低效的例子,更多的是说明要点而非最佳运行。

int unicodeCharacterLocation = Str.indexOf("\\u")

if (Character.isDigit(Str.charAt(unicodeCharacterLocation + 1)))
{
    if (Character.isDigit(Str.charAt(unicodeCharacterLocation + 2)))
    {
        if (Character.isDigit(Str.charAt(unicodeCharacterLocation + 3)))
        {
            if (Character.isDigit(Str.charAt(unicodeCharacterLocation + 4)))
            {
                //You may have found a unicode character
            }
        }
    }
}

这可以在循环中设置以查找所有unicode字符。

现在,要显示找到的字符,您需要使用单个unicode字符替换字符串中的相应unicode值。为此,您必须将代码解释为其字符。 This question已经很好地解释了这个过程。