前言
日常积累,欢迎指正
export function formatAnswer(str) {
const symbols = [
//',', '。', '?', '!', ':', ';', '、', '~', '&', '@', '#',
',', '.', '?', '!', ':', ';', '.', '~', '&', '@', '#',
',', '。', '?', '!', ':', ';', '、', '~', '&', '@', '#'
]
let strResult
strResult = str.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, '') // Emoji表情
strResult = strResult.replace(/\s+/g, '') // 空格
strResult = strResult.replace(/<\/?.+?>/g, '') // 换行
strResult = strResult.replace(/[\r\n]/g, '') // 换行
strResult = strResult.toLowerCase()
const halfSymbolsLength = symbols.length / 2
for (let i = 0; i < halfSymbolsLength; i++) {
const reg = new RegExp(`/${symbols[i]}`, 'g') // 防止 symbols[i] 为正则表达式中的特殊符号时导致的运行错误
strResult = strResult.replace(reg, symbols[i + halfSymbolsLength])
}
return strResult
}
以上处理没有什么难度,唯一值得注意的代码如下:
const reg = new RegExp(symbols[i], 'g') // 优化前的写法
const reg = new RegExp(`/${symbols[i]}`, 'g') // 优化后的写法
优化后的写法是为了兼容 symbols 中存在正则表达式特殊符号的情况
比如?