打造一款emoji 表情庫(kù)

emoji.png

大家好,我叫謝偉,是一名程序員。

如何你經(jīng)常逛 Github,發(fā)現(xiàn)很多人的項(xiàng)目寫(xiě)的 簡(jiǎn)介圖文并貌,有很多的表情。當(dāng)然說(shuō)到表情,我們?cè)谑謾C(jī)上也存在很多的 emoji 表情,這些表情極大的豐富了我們的內(nèi)容。

所以,趁著空閑,寫(xiě)了下面一款支持 emoji 表情的庫(kù):

主要的用法如下:

package main

import (

    "github.com/wuxiaoxiaoshen/go-emoji/emoji"
)

func main() {
    emj := emoji.NewEmoji()
    emj.Println(":grinning:")
    emj.Println(":fire:")
    emj.Println(":100:")
    emj.Println(":bookmark:")
    fmt.Println(emj.Length())
}
>>
??
??
??
??

支持的API 如下:

  • NewEmoji

初始化操作

emo := emoji.NewEmoji()

  • ShortCodeList

獲取所有的 shortCode

fmt.Println(emo.ShortCodeList())

  • CodePoints

獲取所有的 codePoints

fmt.Println(emo.CodePoints())

  • Print
  • Println
  • Printf
  • Fprint
  • Fprintln
  • Fprintf
  • Sprint
  • Sprintf
  • Errorf

輸出

for _, i := range emo.ShortCodeList() {
        emo.Println(i)
    }
    for _, i := range emo.ShortCodeList() {
        fmt.Println(emo.Exists(i))
    }
    for _, i := range emo.ShortCodeList() {
        emo.Sprintf("%#v", i)
    }
    for _, i := range emo.ShortCodeList() {
        emo.Sprint(i)
    }

  • Random

隨機(jī)得出一個(gè)emoji

  • Length

支持的 emoji 的個(gè)數(shù)

  • Exists

根據(jù) short code 判定是否支持 emoji

整體思路:

  1. 既然是一款 emoji 表情庫(kù),那么得知道存在哪些表情,所以利用爬蟲(chóng)從目標(biāo)網(wǎng)站 搜集碼點(diǎn)和縮寫(xiě)
  2. 搜集完成之后,我們?cè)趺床趴梢酝ㄟ^(guò)縮寫(xiě)或者碼點(diǎn)得出表情呢?

主要的思路如下:將碼點(diǎn)轉(zhuǎn)換為 16 進(jìn)制,再調(diào)用 html.UnescapeString 方法進(jìn)行輸出

package main

import "fmt"
import "strconv"
import "html"

func main(){
    x , _ := strconv.ParseInt("1F600", 16, 64)
    str := html.UnescapeString("&#" + strconv.Itoa(int(x)) + ";")
    fmt.Println(str)
}

  1. 知道了這些簡(jiǎn)單的原理之后,我們后續(xù)的操作,就是通過(guò)搜集的表情的縮寫(xiě)和碼點(diǎn)不斷的豐富,所以衍生出了上文提到的 API
  2. 缺點(diǎn):這種方式只支持存在 縮寫(xiě)且表情是單碼點(diǎn)的情況,有一些復(fù)雜的多碼點(diǎn)的emoji 表情并不能完全處理

項(xiàng)目地址:https://github.com/wuxiaoxiaoshen/go-emoji

歡迎試用。


<完>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • afinalAfinal是一個(gè)android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,489評(píng)論 2 45
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,180評(píng)論 4 61
  • 如果哭能解決問(wèn)題的話(huà),我們地球肯定變成大水球。解決問(wèn)題的有效途徑是提升自己的能力,別無(wú)他法。
    A分享閱讀 219評(píng)論 0 0
  • 灰黑色的粗糙大碗 浮起了春天里 松一樣翠的綠色 在安靜肅穆中 或在兩三好友里 細(xì)細(xì)用味蕾品味 茶一無(wú)所有 沒(méi)有別的秘密
    2班郭琪閱讀 173評(píng)論 0 0
  • 清晨,陽(yáng)光微露,匆匆出門(mén), 卻被空中飛舞的白色絨毛停住了腳步, 抬起笨重的小手抓住這東西, 哦,發(fā)現(xiàn)它盡然是只在詩(shī)...
    反正你不認(rèn)識(shí)我閱讀 209評(píng)論 0 0