JavaScript-заменить все запятые в строке [дубликат]
этот вопрос уже есть ответ здесь:
у меня есть строка с несколькими запятыми, и метод замены строки изменит только первый:
var mystring = "this,is,a,test"
mystring.replace(",","newchar", -1)
результат: "thisnewcharis,a,test"
в документация указывает, что значение по умолчанию заменяет все, и что "-1" также указывает на замену всех, но это не удалось. Есть мысли?
3 ответов
третий параметр String.prototype.replace()
функция никогда не была определена как стандартная, поэтому большинство браузеров просто не реализуют ее.
лучший способ-использовать регулярные выражения С g
(глобальные флаг).
var myStr = 'this,is,a,test';
var newStr = myStr.replace(/,/g, '-');
console.log( newStr ); // "this-is-a-test"
все еще есть проблемы?
важно отметить, что регулярные выражения использовать специальные символы, которые должны быть сбежал. Например, если вам нужно избежать точки (.
) персонажа, вы должны использовать /\./
literal, как и в синтаксисе регулярного выражения, точка соответствует любому символу (кроме линейных Терминаторов).
var myStr = 'this.is.a.test';
var newStr = myStr.replace(/\./g, '-');
console.log( newStr ); // "this-is-a-test"
Если вам нужно передать переменную в качестве строки замены, вместо использования литерала regex вы можете создать RegExp
объект и передайте строку в качестве первого аргумента конструктора. Нормальные правила escape строки (предшествующие специальные символы \
при включении в строку) будет необходимо.
var myStr = 'this.is.a.test';
var reStr = '\.';
var newStr = myStr.replace(new RegExp(reStr, 'g'), '-');
console.log( newStr ); // "this-is-a-test"
просто для удовольствия:
var mystring = "this,is,a,test"
var newchar = '|'
mystring = mystring.split(',').join(newchar);