Javascript Jquery:查找字符串中的所有实例模式,提示用户替换模式的所有实例,然后执行替换
所以基本上我将有一个字符串,它将有n个匹配模式的实例。具体地说,模式将是这种形式的任何东西 我希望遍历我的字符串,并对每个与该模式匹配的唯一实例进行优化。例如,如果我的字符串看起来像这样Javascript Jquery:查找字符串中的所有实例模式,提示用户替换模式的所有实例,然后执行替换,javascript,jquery,string,Javascript,Jquery,String,所以基本上我将有一个字符串,它将有n个匹配模式的实例。具体地说,模式将是这种形式的任何东西 我希望遍历我的字符串,并对每个与该模式匹配的唯一实例进行优化。例如,如果我的字符串看起来像这样 <div>Stuff </div> <%= url %> <%= url %> <%= name %> <div>Stuff </div> <%= name %> <%= url %> <%= na
<div>Stuff </div>
<%= url %>
<%= url %>
<%= name %>
<div>Stuff </div>
<%= name %>
<%= url %>
<%= name %>
东西
东西
我想找到独特的图案和图案。然后,我想提示我的应用程序的用户为这些匹配项提供替换字符串。也就是说,我希望得到一个回复,坚持用stackoverflow.com替换,用Peter替换
然后我想循环字符串并进行这些替换。使用Jquery和纯Javascript的最佳方法是什么?这里有一种方法:
var string = '<div>Stuff </div><%= url %><%= url %><%= name %><div>Stuff </div><%= name %><%= url %><%= name %>';
var n = document.getElementById('a');
function replaceWithPrompt(haystack) {
if (!haystack) {
return false;
}
else {
var nStr = haystack.replace(/(?:<\%\=\s+)(\b[\w]+\b)(?=\s+\%>)/gi, function(a,b) {
var replaceWith = prompt('Replace "' + b + '" with: ', b) || b;
return replaceWith;
});
}
console.log(nStr);
}
n.onclick = function(){
replaceWithPrompt(string);
};
var string='Stuff-Stuff';
var n=document.getElementById('a');
函数replaceWithPrompt(haystack){
如果(!干草堆){
返回false;
}
否则{
var nStr=haystack.replace(/(?:)/gi,函数(a,b){
var replaceWith=prompt('Replace'+b+'为:',b)| b;
返回替换;
});
}
控制台日志(nStr);
}
n、 onclick=function(){
replaceWithPrompt(字符串);
};
以上内容基于具有以下标记的页面:
<button id="a">Replace the strings</button>
替换字符串
参考资料:
// the original string
var string = "<div>Stuff </div><%= url %><%= url %><%= name %><div>Stuff </div><%= name %><%= url %><%= name %>";
// array of patterns to substitute
var patterns = ["<%= url %>","<%= name %>"];
// ask for all the replacements
var result = replacePatterns(string, patterns);
// print out the result
console.log(result);
function replacePatterns(str, pat)
{
for (var i in pat)
{
var p = pat[i];
var regex = new RegExp(p, "g");
var r = prompt("Replacement for "+p);
str = str.replace(regex,r);
}
return str;
}
//原始字符串
var string=“Stuff-Stuff";
//要替换的模式数组
变量模式=[“”,“”];
//要求所有的替代品
var结果=替换模式(字符串、模式);
//把结果打印出来
控制台日志(结果);
函数替换模式(str、pat)
{
用于(pat中的var i)
{
var p=pat[i];
var regex=新RegExp(p,“g”);
var r=提示(“替换为”+p);
str=str.replace(regex,r);
}
返回str;
}
jQuery能为您做的最多的事情就是获取和设置html,并可能替换prompt()
有一个外观更好的对话框。剩下的部分必须用regexp和loops来完成。jQuery不是每个螺丝钉的锤子。这似乎适合普通JSCool,用普通js做这件事的最佳方式是什么?如果每个都使用相同的替换文本,那就有点小变化了。
(在Q中我不清楚,但这正是我想要的:)