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 }