【发布时间】:2016-03-22 14:07:59
【问题描述】:
我有一个 JSON 将所有 unicode 表情符号映射到它们的冒号分隔字符串表示(如 twitter 使用)。我已将文件导入到 Pair 的 ArrayList 中,现在需要扫描字符串消息并将任何 unicode 表情符号替换为其字符串等效项。
我的转换代码如下:
public static String getStringFromUnicode(Context context, String m) {
ArrayList<Pair<Character, String>> list = loadEmojis(context);
String formattedString="";
for (Pair p : list) {
formattedString = message.replaceAll(String.valueOf(p.first), ":" + p.second + ":");
}
return formattedString;
}
但是当我将消息发送到服务器时,我总是得到 unicode 表情符号表示。
任何帮助将不胜感激,谢谢!!
【问题讨论】:
-
什么是
a colon delimited String emoji?? -
类似这样的东西 :smile: 例如代表 0x1F603 的 unicode 表情符号
-
那么你必须有一个替换列表。即:
myString = myString.replace("0x1F603", ":simle:");- 显然,在一个循环中完成,该循环从...数组/数组列表/.../数据库表/任何东西中读取对 -
你的问题可能出在replaceAll()的使用上。我假设“消息”是一个属性变量并且它是一个字符串。 replaceAll() 的第一个参数是一个字符串,但它被解释为正则表达式。这表明它可能会被 Unicode 字符所代表的多个字节所混淆。为了验证这一点,您可以尝试使用一个小的 llop 自己解析字符串,其中 indexOf() 和 substring() 代替 replaceAll()
-
@Frank N Stein 是的,我有一个映射所有这些的列表,但是根据您的示例,它不是由字符串表示的 unicode,而是表示为字符,例如 JSONObject因为那个表情符号映射看起来像这样:“ðŸ~„”:“微笑”,
标签: java android string unicode character