Awesome
含QQ表情 文本替换解析库
经典QQ表情/文字替换 + png/gif图片<br> 部分依赖于qqface 实际使用 以小程序场景为例 参考wxacomp-qtext
npm install --save qtext-parse
import { replaceCharSymbols, segmentText } from 'qtext-parse'
segmentText:
segmentText(`https://mp.weixin.qq.com/s/jLMBp1e7BC-PGr2tLEQpRQ
周日读报[愉快]
新数字经济协定[强]
毕业生就业压力[白眼]
鼓励生育政策多[玫瑰]
居民用电高档贵[悠闲]
煤炭产量有保障[Rich]
汽车消费发补贴[色]`)
//=> [
// {
// "type": "text",
// "text": "https://mp.weixin.qq.com/s/jLMBp1e7BC-PGr2tLEQpRQ\n周日读报",
// },
// { "type": "qqface", "index": 21 },
// { "type": "text", "text": "\n新数字经济协定" },
// { "type": "qqface", "index": 79 },
// // ...
// ]
返回的segments 对应的渲染逻辑:
<wxs module="m1">
var qqfaceUrl = 'https://unpkg.com/qqface@0.1.2/img/'
module.exports.getQQfaceUrl = function (item) {
// 注意 png仅支持 0~104 gif支持0~121
return qqfaceUrl + item.index + (item.index > 104 ? '.gif' : '.png')
}
</wxs>
<view class="qtext">
<block wx:for-items="{{segments}}" wx:key="index">
<!-- 这里在表情图标左右插入text空格 是为了添加下划线时能被覆盖到 -->
<image wx:if="{{item.type === 'qqface'}}"> class="image" src="{{m1.getQQfaceUrl(item)}}"></image>
<text wx:elif="{{item.type === 'text'}}" class="text">{{item.text}}</text>
</block>
</view>
replaceCharSymbols:
replaceCharSymbols(`https://mp.weixin.qq.com/s/jLMBp1e7BC-PGr2tLEQpRQ
周日读报/:,@-D
新数字经济协定/:strong
毕业生就业压力/::d
鼓励生育政策多/:rose
居民用电高档贵/::,@
煤炭产量有保障[Rich]
汽车消费发补贴/::B`)
//=> `https://mp.weixin.qq.com/s/jLMBp1e7BC-PGr2tLEQpRQ
// 周日读报[愉快]
// 新数字经济协定[强]
// 毕业生就业压力[白眼]
// 鼓励生育政策多[玫瑰]
// 居民用电高档贵[悠闲]
// 煤炭产量有保障[Rich]
// 汽车消费发补贴[色]`