У меня есть эта строка:заменить все вхождения в строку, используя JavaScript
«dsfnsdfksh [аа] lkdfjldfjgljd [аа]»
Мне нужно найти все occurrencies из [аа] и заменить ее на другую строку, например: dd
Как я могу это сделать?
У меня есть эта строка:заменить все вхождения в строку, используя JavaScript
«dsfnsdfksh [аа] lkdfjldfjgljd [аа]»
Мне нужно найти все occurrencies из [аа] и заменить ее на другую строку, например: dd
Как я могу это сделать?
Вы можете использовать регулярное выражение с флагом g
. Обратите внимание, что вам придется бежать [
и ]
с \
//somewhere at the top of the script
if (!RegExp.escape) {
RegExp.escape = function(value) {
return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&")
};
}
var string = "dsfnsdfksh[aa]lkdfjldfjgljd[aa]";
var pattern = '[aa]';
var regex = new RegExp(RegExp.escape(pattern), 'g');
var text = string.replace(regex, 'dd');
console.log(text)
Это работает, но если я нужно заменить шаблон переменной не работает, например, var pattern = '/ \ [' + 'aa' + '\]/g' не работает – cmonti
@cmonti см. обновление –
Шаблон (ETA: that WAS), переданный в 'replace()' в ответе выше, не является строкой - если вы посмотрите близко, вы увидите, что вокруг него нет кавычек. Однако документы для 'replace()' do предлагают форму, которая примет строку. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace –
Вы можете использовать .replace
для этого. Вот пример:
HTML
<!DOCTYPE Html />
<html>
<head>
<title></title>
</head>
<body>
<input type="text" id="theInput" />
<input type="submit" value="replace" id="btnReplace"/>
<script type="text/javascript" src="theJS.js"></script>
</body>
</html>
JavaScript
var fieldInput = document.getElementById("theInput");
var theButton = document.getElementById("btnReplace");
theButton.onclick = function() {
var originalValue = fieldInput.value;
var resultValue = originalValue.replace(/\[aa\]/g, "REPLACEMENT");
fieldInput.value = resultValue;
}
С этим я могу заменить все occurrencies:
var pattern = '[aa]';
var string = "dsfnsdfksh[aa]lkdfjldfjgljd[aa]";
var text = string.replace(new RegExp(pattern.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), 'g'), 'dd');
console.log(text);
Что вы уже пробовали? –
Возможный дубликат [Замена всех вхождений строки в JavaScript] (http://stackoverflow.com/questions/1144783/replacing-all-occurrences-of-a-string-in-javascript) – penner