在Firebase Functions中如何替换字符串内所有指定字符
解决方法
JavaScript 中默认的 replace() 方法如果第一个参数传入字符串,只会替换第一个匹配到的内容。要实现全局替换有两种常用方案:
方案1:使用 replaceAll() 方法(推荐,ES2021+ 支持)
这是最简单的全局替换方案,直接调用该方法即可替换所有匹配的字符串:
exports.customerCancel = functions.database.ref(`/test`) .onUpdate(async(change, context) => { var status = change.after.val(); // 示例:把所有a替换为m let sta = String(status).replaceAll("a","m"); // 如果要同时替换"和/,可以链式调用,比如把这两个字符都替换为空 // let sta = String(status).replaceAll('"', '').replaceAll('/', ''); database.ref(`/result`).set(sta); });
目前 Node.js 16及以上版本、所有主流浏览器都已支持该方法。
方案2:使用带全局匹配标志的正则表达式
如果运行环境是不支持ES2021的旧版本,可以用正则表达式实现,正则末尾加g标志表示全局匹配,注意正则中的特殊字符需要加\转义:
exports.customerCancel = functions.database.ref(`/test`) .onUpdate(async(change, context) => { var status = change.after.val(); // 示例:把所有a替换为m,g表示全局匹配 let sta = String(status).replace(/a/g,"m"); // 如果要同时替换"和/,注意/属于正则特殊字符需要转义,用\/表示 // 匹配所有"或者/的正则为/["/]/g,替换为空的写法如下 // let sta = String(status).replace(/["/]/g, ''); database.ref(`/result`).set(sta); });
内容的提问来源于stack exchange,提问作者Roy Sougat
相关产品推荐
相关产品推荐

