鍍金池/ 問答/C++  網絡安全  HTML/ h5(即瀏覽器客戶端,使用js)環(huán)境下,emoji表情圖片轉unicode編碼怎

h5(即瀏覽器客戶端,使用js)環(huán)境下,emoji表情圖片轉unicode編碼怎么實現(xiàn)

編碼環(huán)境:vue-cli,emoji
背景:unicode轉圖片已實現(xiàn),表情圖片的名稱本身就是該表情的unicode碼有關(有現(xiàn)成方法通過表情的utf8碼找到對應的圖片名稱),有一個對應的類似數(shù)據字典文件config.js,關鍵內容大體如下:
config:[

{
  imgNum: 1,
  text: '哈哈',
  unicode: '?'
},
{
  imgNum: 2,
  text: '大笑',
  unicode: '?'
},
...
生成的表情html圖片字符串已實現(xiàn),例如

let str = '測試啊<img width="18" class="emoji" src="../../../assets/images/emoji/1f604.png">測試<img width="18" class="emoji" src="../../../assets/images/emoji/1f603.png"><img width="18" class="emoji" src="../../../assets/images/emoji/1f603.png">測試';

具體問題:怎樣將上面的html字符串轉換成:'測試啊?測試??測試',以方便發(fā)給后臺處理,我需要一個方法完成這就事情,但是js功力不是很強,不知道怎么寫的好
:由于需要處理的字符串內容不是確定的,也就是不確定會有多少表情,表情在字符串的什么地方,可以的話請大神提供一個類似示例處理,我主要不清楚這部分邏輯該具體怎樣寫js
個人想法:我的處理思路是一是擴充前面的那個數(shù)據字典,比如對象里面新增圖片名稱字段,以方便找到img對應的utf8碼,接上來可能是通過正則遍歷、拆分、拼湊字符串,達到我的想要的結果,如果有更好的思路也歡迎大神多多指教。

回答
編輯回答
萌吟

還是自己想出了辦法,這里的關鍵有兩點:
1.渲染表情html代碼的時候,每個表情圖片的alt的屬性值放入對應的config里面的text屬性值,形成如下所示代碼:

<img class="emoji" alt="哈哈" src="../static/emoji/1f604.png">測試測試<img class="emoji" alt="你懂的" src="../static/emoji/1f609.png"><img class="emoji" alt="你懂的" src="../static/emoji/1f609.png">

然后將該字符串的img字符串替換為表情字符,代碼如下:

let oldMsg = '<img class="emoji" alt="哈哈" src="../static/emoji/1f604.png">測試測試<img class="emoji" alt="你懂的" src="../static/emoji/1f609.png"><img class="emoji" alt="你懂的" src="../static/emoji/1f609.png">'
let newMsg = oldMsg.replace(/<img[^>]*>/g,(match)=>{
    //截取alt里面的值,對應數(shù)據字典里面的text屬性,可以遍歷到對應的unicode碼(uft8)
    let alt = match.split('" alt="')[1].split('" src="')[0]
    let text = ''
    for(let obj of EmojiUtil.config){
        if(obj.text == alt){
            text = obj.unicode
            break
        }
    }
    return text
})
console.log(newMsg)
2018年1月30日 10:29