Javascript заменить части строки в переменные - PullRequest
1 голос
/ 02 апреля 2012

Я хочу сделать поиск и заменить в строке.Он ищет любое слово, которое начинается с «$», и заменяет его значением из массива.Например, если строка:

[div class='news'][h4]$title[/h4][p]$desc[/p][/div]

Она заменяет [] на <> (уже сделано).Но тогда я хочу заменить $ title данными из массива.Таким образом, data ["title"] и затем $ desc будут заменены на data ["desc"].Пока у меня есть код

var obj = $('#'+id);
var url = $(obj).attr('loadJSON');
var format = $(obj).attr('responseFormat');
$.getJSON(url, function(data) {
    var html = "";
    for(var i=0;i<data.length;i++) {
        var tmp = format;
        tmp = tmp.replace(/\[+(.*?)\]+/g,"<$1>");
        tmp = tmp.replace();
    }
});

Формат - это строка, в которой он будет заменен, а данные (из ответа JSON) - это массив, в который я хочу изменить переменные.

Может ли кто-нибудь помочь мне с этим?Заранее спасибо

Ответы [ 3 ]

4 голосов
/ 02 апреля 2012

затем добавьте в качестве последней замены

tmp = tmp.replace(/\$([a-z]+)/gi, function(match, v) {
   return data[v] || v;
})

обратите внимание, что в случае data[v] не определено, вы можете вернуть что-то еще, например data[v] || ["not found", v].join(' '), просто чтобы отследить, какая переменная отсутствует

0 голосов
/ 02 апреля 2012

Вы могли бы сделать

tmp = tmp.replace(/\$([a-z]+)/gi, function(match) {
    match = match.replace('$', '');
   return (data[match] || match)
});

http://jsfiddle.net/uZbk8/

0 голосов
/ 02 апреля 2012

Я не эксперт по JS, но это выглядит неправильно во многих отношениях ... ваш объект данных должен быть объектом JS, что-то вроде { title: 'Generic title.', description: 'It's a generic title' }.

Почему бы не поместить значения в элементы абзаца, а затем вставить их в элемент div (т.е. вы добавляете их). Примерно так:

$.getJSON(url, function(data) {
    $('div.news').append($('<p />').text(data.title));
    $('div.news').append($('<p />').txt(data.description));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...