Есть ли способ добавить код к каждому экземпляру регулярного выражения на лету? - PullRequest
3 голосов
/ 14 февраля 2011

Допустим, у меня есть блок текста, и я хочу заменить каждый экземпляр слова "the" на индексированное число.

Например ...

«Великая белая акула является отцом теории укуса».

станет ...

"0 большая белая акула - 1 fa2r укуса 3ory."

Я ищу что-то вроде: myText.match (/ The / г) .each (функция (я) { //? });

Решения jquery приветствуются.

Ответы [ 2 ]

5 голосов
/ 14 февраля 2011

Пример: http://jsfiddle.net/sYQgb/1/

var i = -1;
myText = myText.replace(/the/gi, function(){ return ++i; });
0 голосов
/ 14 февраля 2011
function replaceText(text, splitArg) {
    //var text ="axaxa";
    var parts = text.split(splitArg);

    var replaced = "";
    var part;
    for (var i=0;i<parts.length;i++) {
        part = parts[i]
        if(i > 0)
            replaced += i-1;

        replaced+=part;

    }
    return replaced;
}


function writeLine(text) {
     document.write("<p>"+text+" &nbsp;</p>");   
}

writeLine(replaceText("axa", "x"));
writeLine(replaceText("axaxa", "x"));
writeLine(replaceText("axaxxa", "x"));
writeLine(replaceText("axaxxa", /x+/));//**using a regex!**
writeLine(replaceText("", "x"));
writeLine(replaceText("aa", "x"));

//output:
//a0a  
//a0a1a  
//a0a12a  
//a0a1a  
// 
//aa  

Если вы хотите поиграть: http://jsfiddle.net/QFUWG/

...