Как найти и заменить текст, который находится между определенными ключевыми словами, с помощью JavaScript? - PullRequest
0 голосов
/ 29 декабря 2011

Например, у меня есть этот текст

"!?vake 7EnEebjP8jXf JFyd5hpIVa6B  !?vake".

Начальным и конечным ключевым словом является "!? Vake", и я хочу получить зашифрованный контент между ключевыми словами, расшифровать его и заменить.

HTML-код перед заменой будет выглядеть следующим образом:

<span class="messageBody" data-ft="{&quot;type&quot;:3}">‎!?vake 7EnEebjP8jXf JFyd5hpIVa6B
Fu63LH23dAiB !?vake</span>

и после расшифровки:

<span class="messageBody" data-ft="{&quot;type&quot;:3}">‎i am the decrypted text</span>

Замена должна работать во всем HTML-документе, не зная конкретного элементазашифрованный текст.

Ответы [ 3 ]

2 голосов
/ 29 декабря 2011

Вы можете достичь этого, используя RegExp. Посмотреть демо здесь: http://jsfiddle.net/diode/KVqJS/4/

var body = $("body").html();

var matched;
while ((matched = body.match(/!\?vake (.*?) !\?vake/))) {
    if(matched.length > 1){
        body = body.replace(/\!\?vake (.*) \!\?vake/, decode(matched[1]));
    }

}

$("body").html(body);

function decode(encoded) {
    return "decoded " + encoded;
}
1 голос
/ 29 декабря 2011

Вы можете использовать регулярные выражения для поиска (и замены) данных.

Вот быстрый и грязный JSFiddle: http://jsfiddle.net/z8rVc/1/

Я уверен, что кто-то придумает болееэлегантный метод, однако.

0 голосов
/ 29 декабря 2011

Вы можете использовать следующий поиск регулярных выражений и заменить код в JS:

var a = "!?vake 7EnEebjP8jXf JFyd5hpIVa6B  !?vake";
var b = a.replace(/\!\?vake(.*)\!\?vake/g, '$1');
/// b contains your string between the keywords which you can decrypt as required.
...