/**
* 将文本中特定关键词前面的指定数量的字符替换为指定的字符串。
* @param text - 待处理的文本。
* @param options - 选项对象,包括 keyword、replaceCount 和 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)); // 输出: 去问**同志去问**区
标签:文字,const,string,keyword,text,replaceCount,脱敏,replacement
From: https://www.cnblogs.com/hjk1124/p/18039804