goProject/.svn/pristine/57/57ed580996c3cd3c94a7b7422b369a6540ad167a.svn-base
2025-01-06 16:21:36 +08:00

199 lines
5.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}