前言
日常積累,歡迎指正
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 中存在正規表達式特殊符号的情況
比如
?