所以基本上我将有一个字符串,它将有n个与模式匹配的实例。具体来说,该模式将是这种形式的任何内容<%=(text)%>。
我想通过我的字符串来完善与该模式匹配的每个唯一实例。例如,如果我的字符串看起来像这样。
<div>Stuff </div>
<%= url %>
<%= url %>
<%= name %>
<div>Stuff </div>
<%= name %>
<%= url %>
<%= name %>
我想找到独特的模式&lt;%= url%&gt;和&lt;%= name%&gt;。然后我想提示我的应用程序的用户提供这些匹配的替换字符串。即我想要一个坚持&lt;%= url%&gt;的回复替换为stackoverflow.com和&lt;%= name%&gt;被Peter取代。
然后我想循环遍历字符串并进行这些替换。使用Jquery和纯Javascript的最佳方法是什么?
答案 0 :(得分:0)
这是一种方法:
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);
};
以上内容基于带有以下标记的页面:
<button id="a">Replace the strings</button>
参考文献:
答案 1 :(得分:0)
试试这个:
// 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;
}