为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 golang 中处理(解码或删除无效的 Unicode 代码点)带有表情符号的字符串?

如何在 golang 中处理(解码或删除无效的 Unicode 代码点)带有表情符号的字符串?

Go
慕的地8271018 2023-04-24 16:29:59
示例字符串:"\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会给你两个你必须自己组合的替代品。

  1. 使用 strconv.Unquote 像你一样取消引用。

  2. 为方便起见转换为 []rune。

  3. 使用 unicode/utf16.IsSurrogate 查找代理对。

  4. 将代理对与 unicode/utf16.DecodeRune 组合。

  5. 转换回字符串。


查看完整回答
反对 回复 2023-04-24
  • 1 回答
  • 0 关注
  • 232 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信