示例字符串:"\u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u044b! \n\u0421\u043f\u0430\u0441\u0438\u0431\u043e \ud83d\udcf8 link.ru \u0437\u0430 \n#hashtag Русское слово, an English word"没有这个,\ud83d\udcf8我的功能运行良好:func convertUnicode(text string) string { s, err := strconv.Unquote(`"` + text + `"`) if err != nil { // Error.Printf("can't convert: %s | err: %s\n", text, err) return text } return s}我的问题是如何检测文本是否包含此类条目?以及如何将其转换为表情符号或如何从文本中删除?谢谢
1 回答
冉冉说
TA贡献1877条经验 获得超1个赞
好吧,可能并不像既不是有效代码点\ud83d
也不是有效代码点那么简单\udcf8
,而是在 UTF-16 编码中使用的代理对来编码\U0001F4F8
. 现在strconv.Unquote
会给你两个你必须自己组合的替代品。
使用 strconv.Unquote 像你一样取消引用。
为方便起见转换为 []rune。
使用 unicode/utf16.IsSurrogate 查找代理对。
将代理对与 unicode/utf16.DecodeRune 组合。
转换回字符串。
- 1 回答
- 0 关注
- 232 浏览
添加回答
举报
0/150
提交
取消