2015-09-28 5 views
2

Я пытаюсь преобразовать эту строкуЗаменить несколько строк с Javascript

.jpg,.gif,.png 

в этом (а не точки и пробела после запятой)

jpg, gif, png 

Я думал, что-то вроде PHP's str_replace для массивов в JS сделают трюк, поэтому я нашел this post и, в частности, this answer. Я попробовал, но не работает так, как ожидалось. Я получаю пустую строку ... Я что-то делаю неправильно?

JS

String.prototype.replaceArray = function(find, replace) 
{ 
    var replaceString = this; 
    var regex; 

    for (var i = 0; i < find.length; i++) 
    { 
     regex = new RegExp(find[i], "g"); 
     replaceString = replaceString.replace(regex, replace[i]); 
    } 

    return replaceString; 
}; 

var my_string = ".jpg,.gif,.png"; 

alert(my_string.replaceArray([".", ","],["", ", "])); 

Link to jsfiddle

+0

@Hovercraft: JavaScript !, Я должен принял неправильный тег предложение withoud чтение –

+1

Есть ли практическая причина в пользу массивов и регулярных выражений в течение двух основных Заменяет ? – usr2564301

+0

hwnd: Я не думаю, что это действительно то же самое, что и вопрос, с которым вы связались. Если я не ошибаюсь, OP хотел бы понять, почему он получает пустую строку вместо ожидаемого результата. – rossipedia

ответ

3

Первое, что вы пытаетесь заменить это период ("."), который представляет собой регулярное выражение для любого символа. Вы должны избежать этого: "\\."

+0

Вы правы !, Я попробовал только одну косую черту ... спасибо! –

+0

Да, вам нужна вторая косая черта, потому что javascript считает, что вы избегаете периода до того, как событие достигнет объекта RegExp. – rossipedia

0

Я просто сделал это:

var target = '.jpg,.gif,.png'; 
target = target.replace(/\\./g, ''); 
target = target.replace(/,/g, ', '); 

Я уверен, что это может быть сделано более эффективно, но это будет получить работу.

0

Вы можете изменить Fn на это:

function strToArr(str) 
{ 
    var res = str.replace(/\./g, ""); 
    return res.split(","); 
} 
Смежные вопросы