猿问

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

示例字符串:


"\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

}

我的问题是如何检测文本是否包含此类条目?以及如何将其转换为表情符号或如何从文本中删除?谢谢


慕的地8271018
浏览 233回答 1
1回答

冉冉说

好吧,可能并不像既不是有效代码点\ud83d也不是有效代码点那么简单\udcf8,而是在 UTF-16 编码中使用的代理对来编码\U0001F4F8. 现在strconv.Unquote会给你两个你必须自己组合的替代品。使用 strconv.Unquote 像你一样取消引用。为方便起见转换为 []rune。使用 unicode/utf16.IsSurrogate 查找代理对。将代理对与 unicode/utf16.DecodeRune 组合。转换回字符串。
随时随地看视频慕课网APP

相关分类

Go
我要回答