用JavaScript实现全局替换,解决$等特殊符号的难题
感激海浪提供的正则表达式的帮助,原贴可参见[这里](
最佳实现方式的代码如下:
String.prototype.replaceAll = stringReplaceAll; // 定义一个全局替换函数
function stringReplaceAll(AFindText, ARepText) { // 创建新的替换函数,支持特殊符号和忽略大小写
var raRegExp = new RegExp(AFindText.replace(/([\(\)[\]\{\}\^\$\+\-\\?\.\"\'\|\/\\])/g,"\\$1"),"ig"); // 创建正则表达式,处理特殊字符并忽略大小写
return this.replace(raRegExp, ARepText); // 使用创建的表达式进行替换操作
}
var ssString=".lei.;.CnLei.;.lei."; // 测试字符串
alert(ssString.replaceAll("lei","ie")); // 将字符串中的"lei"替换为"ie"的演示
ssString=".${MyName}.;.${MyName}.;.${MyName}."; // 使用变量的测试字符串
alert(ssString.replaceAll("${MyName}","lei")); // 将字符串中的"${MyName}"替换为"lei"的演示
ssString=".{MyName}.;.{MyName}.;.{MyName}."; // 其他格式的测试字符串
alert(ssString.replaceAll("{MyName}","lei")); // 将字符串中的"{MyName}"替换为"lei"的演示
之前我们尝试过两种实现方式。方法一可以实现忽略大小写,但无法替换特殊符号。而方法二可以替换特殊符号$等,但无法忽略大小写。这两种方式都有其局限性,无法满足我们的全部需求。而现在,我们找到了一个完美的解决方案,既可以替换特殊符号,也可以忽略大小写。这对于我们的模板替换工具来说是一个巨大的进步。现在我们可以更轻松、高效地进行字符串替换操作了。