Заменить строки globaly из шаблона массива в JavaScript

89
15

Я пытаюсь заменить много символов из массива глобально с регулярным выражением, но он просто заменяет первый символ для меня:

var ARABIC_PUNC_AND_REPLACEMENTS = [
[
',', // Comma
';', // Semicolon
],
[
'،', // Comma
'؛', // Semicolon
]
];

var string = ',,, ;;;';

for (var i = 0; i < ARABIC_PUNC_AND_REPLACEMENTS[0].length; i++) {
string = string.replace(ARABIC_PUNC_AND_REPLACEMENTS[0][i], ARABIC_PUNC_AND_REPLACEMENTS[1][i]);
}

console.log(string); // "،,, ؛;;"
// I want this to be returnd: "،،، ؛؛؛"

спросил(а) 2020-04-04T00:54:27+03:00 3 месяца назад
1
Решение
55

Вам нужно построить RegExp и передать global флаг следующим образом:

for (var i = 0; i < ARABIC_PUNC_AND_REPLACEMENTS[0].length; i++) {
string = string.replace(new RegExp(ARABIC_PUNC_AND_REPLACEMENTS[0][i], 'g'),
ARABIC_PUNC_AND_REPLACEMENTS[1][i]);
}

console.log(string);
//=> "،،، ؛؛؛"

ответил(а) 2020-04-04T01:14:56.435560+03:00 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема