文字脫敏

/** * 將文本中特定關鍵詞前面的指定數量的字符替換爲指定的字符串。 * @param text - 待處理的文本。 * @param options - 選項對象,包括 keyword、replaceCount 和 replacement 字段。 * @param keyword - 要替換的關鍵詞的正則表達式模式,默認爲 '(市|縣|區|同志)'。 * @param replaceCount - 要替換的字符數,默認爲 2。 * @param replacement - 替換成的字符串,默認爲 '*'。 * @returns 處理後的文本。 */ function replacePrefix(text: string, options?: { keyword?: string, replaceCount?: number, replacement?: string }): string { // 默認選項 const defaultOptions = { keyword: '(市|縣|區|同志)', replaceCount: 2, replacement: '*' }; // 合併選項 const { keyword, replaceCount, replacement } = { ...defaultOptions, ...options }; // 構造正則表達式模式 const pattern = new RegExp(`(.{${replaceCount}})(${keyword})(?:(?!\\2).)*?`, 'g'); // 如果文本中不存在匹配模式,則直接返回原始文本 if (!pattern.test(text)) { return text; } // 替換匹配的部分 const replacedText = text.replace(pattern, (match, p1, p2) => { return replacement.repeat(replaceCount) + p2; }); return replacedText; } // 測試 const text1 = '去問人體市去問人體區'; console.log(replacePrefix(text1)); // 輸出: 去問**市去問**區 const text2 = '去問人體同志去問人體區'; console.log(replacePrefix(text2)); // 輸出: 去問**同志去問**區
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章