64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
package util
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"regexp"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// EmojiEncode Emoji表情转码
|
|
func EmojiDecode(s string) string {
|
|
//emoji表情的数据表达式
|
|
var re *regexp.Regexp
|
|
var reg *regexp.Regexp
|
|
var src []string
|
|
re = regexp.MustCompile("\\[[\\\\u0-9a-zA-Z]")
|
|
//提取emoji数据表达式
|
|
reg = regexp.MustCompile("\\[\\\\u|]")
|
|
src = re.FindAllString(s, -1)
|
|
for i := 0; i < len(src); i++ {
|
|
var e = reg.ReplaceAllString(src[i], "")
|
|
var p, err = strconv.ParseInt(e, 16, 32)
|
|
if err == nil {
|
|
s = strings.Replace(s, src[i], string(rune(p)), -1)
|
|
}
|
|
}
|
|
return s
|
|
}
|
|
|
|
// 表情转换
|
|
func EmojiCode(s string) string {
|
|
var ret string
|
|
var rs []rune
|
|
rs = []rune(s)
|
|
|
|
for i := 0; i < len(rs); i++ {
|
|
if len(string(rs[i])) == 4 {
|
|
ret += `[\u` + strconv.FormatInt(int64(rs[i]), 16) + `]`
|
|
} else {
|
|
ret += string(rs[i])
|
|
}
|
|
}
|
|
return ret
|
|
}
|
|
|
|
// BaseEncode Base64编码
|
|
func BaseEncode(s string) string {
|
|
data := []byte(s)
|
|
dst := make([]byte, base64.StdEncoding.EncodedLen(len(data)))
|
|
base64.StdEncoding.Encode(dst, data)
|
|
return string(dst)
|
|
}
|
|
|
|
// BaseDecode Base64解码
|
|
func BaseDecode(s string) string {
|
|
data := []byte(s)
|
|
dst := make([]byte, base64.StdEncoding.DecodedLen(len(data)))
|
|
n, err := base64.StdEncoding.Decode(dst, data)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
return string(dst[:n])
|
|
}
|