在Javascript/jQuery中对变量数组使用多个.replace调用
我正在开发一个工具,该工具将接收从word文档复制的文本,并返回一个在Javascript/jQuery中对变量数组使用多个.replace调用,javascript,jquery,Javascript,Jquery,我正在开发一个工具,该工具将接收从word文档复制的文本,并返回一个html输出,以便复制/粘贴到电子邮件客户端进行电子邮件营销 在此过程中,工具需要处理的步骤之一是替换复制值中的特殊字符。输出需要显示编码值,以便在将其复制到电子邮件客户端时,在邮件发送过程中相应地呈现 问题是用户可以填充多个输入,而现在代码非常潮湿。。。我想把这个工具设置得更干净一点,不要经常重复代码 当前,通过提示符()向工具提供输入 我正在接受输入并替换特殊字符™, ®, Ø、''、''和其他(本例中给出的部分列表)根据需
html
输出,以便复制/粘贴到电子邮件客户端进行电子邮件营销
在此过程中,工具需要处理的步骤之一是替换复制值中的特殊字符。输出需要显示编码值,以便在将其复制到电子邮件客户端时,在邮件发送过程中相应地呈现
问题是用户可以填充多个输入,而现在代码非常潮湿。。。我想把这个工具设置得更干净一点,不要经常重复代码
当前,通过提示符()向工具提供输入代码>
我正在接受输入并替换特殊字符™, ®, Ø、''、''和其他(本例中给出的部分列表)根据需要:
JS(评论版)
JS(简体版)
但是。。。我需要在许多提示下运行相同的替换。我不想在代码中重复多次,每个变量都会根据需要更改
我更愿意做的是创建一个函数来处理替换,然后简单地创建一个变量数组并在数组上运行该函数
范例
function txtEncode () {
...replacment code here...
}
var inputTxt = [msg1, msg2, msg3...];
for (var i=0; i < inputTxt.length; i++){
txtEncode(i)
}
函数txtEncode(){
…在此重新插入代码。。。
}
var inputTxt=[msg1、msg2、msg3…];
对于(变量i=0;i
只需使用替换对创建一个数组:
var replacements = [ ["&", "&"], ["'", """] etc
并逐一应用:
replacements.forEach(function(pair) {
msg = msg.split(pair[0]).join(pair[1]);
});
split/join
比更好地替换文字字符串。替换是用于正则表达式的
而且,您的编码看起来不正确,&#174;代码>将显示为®代码>,而不是®您可以使用全局查找/替换函数并扩展字符串原型,我的一个小提琴中有此代码,但找不到源代码
代码:
String.prototype.replaceArray=函数(查找、替换){
var replaceString=this;
var regex;
for(var i=0;i
演示:为代码的字符串对象添加一个方法
String.prototype.myCleanString = function(){
return this.replace(/[\u0027]/g, '&#39;')
.replace(/[\u2122]/g,'&#153;')
.replace(/[\u00AE]/g, '&#174;')
.replace(/[\u201c]/g, '&#34;')
.replace(/[\u201D]/g, '&#34;')
.replace(/[\u2018]/g, '&#39;')
.replace(/[\u2019]/g, '&#39;')
.replace(/[\u2022]/g, '&#2022;')
.replace(/foo/g, 'bar');
}
需要时打电话 你为什么不能照你的建议去做呢?创建一个方法并将替换逻辑放在其中?。。我想关键是我不确定如何实施我的建议。。。我知道我应该这么做。。。因此,我建议使用“&”和“&;”来避免可能的陷阱,如果在消息中已经存在转义值之后进行计算,则会中断it@Rich:这就是我把它放在第一位的原因。是的,可以理解,只是认为应该提到它,因为使它起作用的假设是不存在逃逸(如输入中预先存在的)#174; 是正确的。。。我需要输出为复制/粘贴到电子邮件客户端的字符串。输出将对第一个&;输入一个符号并留下一个可复制的代码®;。将其粘贴到电子邮件客户端后,编码再次发生,在发送的电子邮件屏幕上留下一个真实的r-ball®副本。我必须查看拆分/加入,因为我不熟悉它。。但这似乎也是可行的。非常感谢。正则表达式总是把我绊倒!如果我只需要替换字符串中的一个特殊字符,这就行了。。我必须在6-7个不同的字符串中搜索20多个字符。
replacements.forEach(function(pair) {
msg = msg.split(pair[0]).join(pair[1]);
});
String.prototype.replaceArray = function(find, replace) {
var replaceString = this;
var regex;
for (var i = 0; i < find.length; i++) {
regex = new RegExp(find[i], "g");
replaceString = replaceString.replace(regex, replace[i]);
}
return replaceString;
};
var msg2 = 'demo \u0027'
var find = ["\u0027"];
var replace = ["&#39;"];
msg2 = msg2.replaceArray(find, replace);
String.prototype.myCleanString = function(){
return this.replace(/[\u0027]/g, '&#39;')
.replace(/[\u2122]/g,'&#153;')
.replace(/[\u00AE]/g, '&#174;')
.replace(/[\u201c]/g, '&#34;')
.replace(/[\u201D]/g, '&#34;')
.replace(/[\u2018]/g, '&#39;')
.replace(/[\u2019]/g, '&#39;')
.replace(/[\u2022]/g, '&#2022;')
.replace(/foo/g, 'bar');
}