goProject/.svn/pristine/57/57ed580996c3cd3c94a7b7422b369a6540ad167a.svn-base

199 lines
5.1 KiB
Plaintext
Raw Permalink Normal View History

2025-01-06 16:21:36 +08:00
package stringUtil
// 表情符号集合
var emojiData map[rune]rune
func init() {
emojiData = make(map[rune]rune, 1024)
addEmojiChar()
}
// 添加一个范围的unicode
// start:unicode起始位置
// endlist:unicode结束位置
func addUnicodeRange(start rune, endlist ...rune) {
if len(endlist) <= 0 {
// 添加单个的
emojiData[start] = start
return
}
end := endlist[0]
if start > end {
return
}
// 添加范围的
for i := start; i <= end; i++ {
emojiData[i] = i
}
}
// 增加emoji表情符号
// 表情字符大全参考:
// https://zh.wikipedia.org/wiki/%E7%B9%AA%E6%96%87%E5%AD%97
// 对应unicode版本号Unicode 10.0版本
func addEmojiChar() {
addUnicodeRange(0x00A9)
addUnicodeRange(0x00AE)
addUnicodeRange(0x203C)
addUnicodeRange(0x2049)
addUnicodeRange(0x2122)
addUnicodeRange(0x2139)
addUnicodeRange(0x2194, 0x2199)
addUnicodeRange(0x21A9, 0x21AA)
addUnicodeRange(0x231A, 0x231B)
addUnicodeRange(0x2328)
addUnicodeRange(0x23CF)
addUnicodeRange(0x23E9, 0x23F3)
addUnicodeRange(0x23F8, 0x23FA)
addUnicodeRange(0x24C2)
addUnicodeRange(0x25AA, 0x25AB)
addUnicodeRange(0x25B6)
addUnicodeRange(0x25C0)
addUnicodeRange(0x25FB, 0x25FE)
addUnicodeRange(0x2600, 0x2604)
addUnicodeRange(0x260E)
addUnicodeRange(0x2611)
addUnicodeRange(0x2614, 0x2615)
addUnicodeRange(0x2618)
addUnicodeRange(0x261D)
addUnicodeRange(0x2620)
addUnicodeRange(0x2622, 0x2623)
addUnicodeRange(0x2626)
addUnicodeRange(0x262A)
addUnicodeRange(0x262E, 0x262F)
addUnicodeRange(0x2638, 0x263A)
addUnicodeRange(0x2640)
addUnicodeRange(0x2642)
addUnicodeRange(0x2648, 0x2653)
addUnicodeRange(0x2660)
addUnicodeRange(0x2663)
addUnicodeRange(0x2665, 0x2666)
addUnicodeRange(0x2668)
addUnicodeRange(0x267B)
addUnicodeRange(0x267F)
addUnicodeRange(0x2692, 0x2697)
addUnicodeRange(0x2699)
addUnicodeRange(0x269B, 0x269C)
addUnicodeRange(0x26A0, 0x26A1)
addUnicodeRange(0x26AA, 0x26AB)
addUnicodeRange(0x26B0, 0x26B1)
addUnicodeRange(0x26BD, 0x26BE)
addUnicodeRange(0x26C4, 0x26C5)
addUnicodeRange(0x26C8)
addUnicodeRange(0x26CE, 0x26CF)
addUnicodeRange(0x26D1)
addUnicodeRange(0x26D3, 0x26D4)
addUnicodeRange(0x26E9, 0x26EA)
addUnicodeRange(0x26F0, 0x26F5)
addUnicodeRange(0x26F7, 0x26FA)
addUnicodeRange(0x26FD)
addUnicodeRange(0x2702)
addUnicodeRange(0x2705)
addUnicodeRange(0x2708, 0x270D)
addUnicodeRange(0x270F)
addUnicodeRange(0x2712)
addUnicodeRange(0x2714)
addUnicodeRange(0x2716)
addUnicodeRange(0x271D)
addUnicodeRange(0x2721)
addUnicodeRange(0x2728)
addUnicodeRange(0x2733, 0x2734)
addUnicodeRange(0x2744)
addUnicodeRange(0x2747)
addUnicodeRange(0x274C)
addUnicodeRange(0x274E)
addUnicodeRange(0x2753, 0x2755)
addUnicodeRange(0x2757)
addUnicodeRange(0x2763, 0x2764)
addUnicodeRange(0x2795, 0x2797)
addUnicodeRange(0x27A1)
addUnicodeRange(0x27B0)
addUnicodeRange(0x27BF)
addUnicodeRange(0x2934, 0x2935)
addUnicodeRange(0x2B05, 0x2B07)
addUnicodeRange(0x2B1B, 0x2B1C)
addUnicodeRange(0x2B50)
addUnicodeRange(0x2B55)
addUnicodeRange(0x3030)
addUnicodeRange(0x303D)
addUnicodeRange(0x3297, 0x3299)
addUnicodeRange(0x3299)
addUnicodeRange(0x1F004)
addUnicodeRange(0x1F0CF)
addUnicodeRange(0x1F170, 0x1F171)
addUnicodeRange(0x1F17E, 0x1F17F)
addUnicodeRange(0x1F18E)
addUnicodeRange(0x1F191, 0x1F19A)
addUnicodeRange(0x1F201, 0x1F202)
addUnicodeRange(0x1F21A)
addUnicodeRange(0x1F22F)
addUnicodeRange(0x1F232, 0x1F23A)
addUnicodeRange(0x1F250, 0x1F251)
addUnicodeRange(0x1F300, 0x1F321)
addUnicodeRange(0x1F324, 0x1F393)
addUnicodeRange(0x1F396, 0x1F397)
addUnicodeRange(0x1F399, 0x1F39B)
addUnicodeRange(0x1F39E, 0x1F3F0)
addUnicodeRange(0x1F3F3, 0x1F3F5)
addUnicodeRange(0x1F3F7, 0x1F53D)
addUnicodeRange(0x1F549, 0x1F54E)
addUnicodeRange(0x1F550, 0x1F567)
addUnicodeRange(0x1F56F, 0x1F570)
addUnicodeRange(0x1F573, 0x1F57A)
addUnicodeRange(0x1F587)
addUnicodeRange(0x1F58A, 0x1F58D)
addUnicodeRange(0x1F590)
addUnicodeRange(0x1F595, 0x1F596)
addUnicodeRange(0x1F5A4, 0x1F5A5)
addUnicodeRange(0x1F5A8)
addUnicodeRange(0x1F5B1, 0x1F5B2)
addUnicodeRange(0x1F5BC)
addUnicodeRange(0x1F5C2, 0x1F5C4)
addUnicodeRange(0x1F5D1, 0x1F5D3)
addUnicodeRange(0x1F5DC, 0x1F5DE)
addUnicodeRange(0x1F5E1)
addUnicodeRange(0x1F5E3)
addUnicodeRange(0x1F5E8)
addUnicodeRange(0x1F5EF)
addUnicodeRange(0x1F5F3)
addUnicodeRange(0x1F5FA, 0x1F6C5)
addUnicodeRange(0x1F6CB, 0x1F6D2)
addUnicodeRange(0x1F6E0, 0x1F6E5)
addUnicodeRange(0x1F6E8)
addUnicodeRange(0x1F6EB, 0x1F6EC)
addUnicodeRange(0x1F6F0)
addUnicodeRange(0x1F6F3, 0x1F6F8)
addUnicodeRange(0x1F910, 0x1F93A)
addUnicodeRange(0x1F93B, 0x1F93E)
addUnicodeRange(0x1F940, 0x1F945)
addUnicodeRange(0x1F947, 0x1F94C)
addUnicodeRange(0x1F950, 0x1F96B)
addUnicodeRange(0x1F980, 0x1F997)
addUnicodeRange(0x1F9C0)
addUnicodeRange(0x1F9D0, 0x1F9E6)
}
// 检查是否含有表情字符
// val:待查看的字符串
// 返回值:
// 是否包含有表情字符
func IfHaveEmoji(val string) bool {
// 由于golang在内存中本来就是使用的Unicode所以可以直接进行匹配操作
for _, charItem := range val {
if _, eixst := emojiData[charItem]; eixst {
return true
}
}
return false
}