我正在开发一个简单的java程序,可以使用这样的字符串:
⛔️✋STOP✋⛔️你违反了法律!但是现在......你
并用适当的java字符替换每个表情符号。 (我不知道该怎么称呼他们)。
以下是一个例子:
汽车表情符号:将替换为:“\ uD83D \ uDE97”。
这允许我有一个字符串,如
"I am a car: \uD83D\uDE97"
在Java源代码中, 让它看起来像这样:
所以问题是,如何在字符串中自动查找某个表情符号(例如,在字符串中查找每个红色汽车表情符号)并将其替换为适当的“Java字符”?
编辑一:
没关系,原来很简单。我可以做到
string.replace("","Java code");
答案 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已经很好地解释了这个过程。