Javascript Jquery:查找字符串中的所有实例模式,提示用户替换模式的所有实例,然后执行替换

Javascript Jquery:查找字符串中的所有实例模式,提示用户替换模式的所有实例,然后执行替换,javascript,jquery,string,Javascript,Jquery,String,所以基本上我将有一个字符串,它将有n个匹配模式的实例。具体地说,模式将是这种形式的任何东西 我希望遍历我的字符串,并对每个与该模式匹配的唯一实例进行优化。例如,如果我的字符串看起来像这样 <div>Stuff </div> <%= url %> <%= url %> <%= name %> <div>Stuff </div> <%= name %> <%= url %> <%= na

所以基本上我将有一个字符串,它将有n个匹配模式的实例。具体地说,模式将是这种形式的任何东西

我希望遍历我的字符串,并对每个与该模式匹配的唯一实例进行优化。例如,如果我的字符串看起来像这样

<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中我不清楚,但这正是我想要的:)