Как заменить строки из массива - PullRequest
1 голос
/ 05 сентября 2010

Я работаю над фрагментом кода, который использует выражения регулярных выражений для поиска / замены смайлов в чате. Тем не менее, я хочу использовать тот же массив значений и выводить их в качестве ссылки.

Регулярное выражение отлично работает для моих поисков, но когда я попытался заменить строку поиска регулярного выражения, прежде чем вывести ее для своей помощи, я все равно получаю косую черту.

:\)
:\(

var emotes = [];
emotes[0] = new Array(':\\\)', 'happy.png');
emotes[1] = new Array(':\\\(', 'sad.png');

function listEmotes(){
    var emotestext = '';
    for(var i = 0; i < emotes.length; i++){

        //Tried this and it doesn't seem to work
        //var emote = emotes[i][0];
        //emote.replace('\\', '');

        emotestext += '<ul>' + emote + ' <img src="emotes/' + emotes[i][1] + '"></ul>';
    }

    return emotestext;
}

1 Ответ

3 голосов
/ 05 сентября 2010

Ваша проблема в том, что str.replace не меняет исходную переменную, а вместо этого возвращает новую. Попробуйте это:

var emotes = [
    [':\\\)', 'happy.png'],
    [':\\\(', 'sad.png']
];

function listEmotes(){
    var emotestext = '';
    for(var i = 0; i < emotes.length; i++){
        var emote = emotes[i][0].replace('\\', ''); // See what I did here?

        emotestext += '<ul>' + emote + ' <img src="emotes/' + emotes[i][1] + '"></ul>';
    }

    return emotestext;
}
...