0

所以基本上我将有一个字符串,它将有 n 个匹配模式的实例。具体来说,该模式将是这种形式的任何东西 <%=(text)%>。

我想遍历我的字符串并细化与该模式匹配的每个唯一实例。例如,如果我的字符串看起来像这样。

<div>Stuff </div>
<%= url %>
<%= url %>
<%= name %>
<div>Stuff </div>
<%= name %>
<%= url %>
<%= name %>

我想找到独特的模式 <%= url %> 和 <%= name %>。然后,我想提示我的应用程序的用户为这些匹配项提供替换字符串。即,我想要一个回应,坚持将 <%= url %> 替换为 stackoverflow.com 并将 <%= name %> 替换为 Peter。

然后我想遍历字符串并进行这些替换。使用 Jquery 和纯 Javascript 的最佳方式/这可能是什么?

4

2 回答 2

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);
};

JS 小提琴演示

以上基于具有以下标记的页面:

 <button id="a">Replace the strings</button>​

参考:

于 2012-06-18T19:01:03.120 回答
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;
}
于 2012-06-18T19:12:05.020 回答