2015-03-09 2 views
0

Каков стандартный способ в javascript для замены каждого вхождения определенного символа в строке само по себе n раз?Умножение символа в строке

У меня есть текстовые строки, где каждое вхождение символа одной кавычки должно быть заменено символом одиночной кавычки, удвоенным, т. Е. Вместо каждого вхождения одной кавычки должно появиться два. Это стандартная задача для предварительного анализа текста для вызовов PostgreSQL.

Я обнаружил, что функция replace() не подходит для этого, то есть мы не можем использовать его как replace('A','AA'), он не работает в этом специальном случае, когда у нас есть строка с повторяющимися символами, такими как 'Test AA', что мы бы хочу превратиться в 'Test AAAA'.

Итак, каков правильный способ сделать это?

+0

Возможно, вы ищете рекурсивную замену? http://stackoverflow.com/questions/1144783/replacing-all-occurrences-of-a-string-in-javascript – briosheje

+0

* «Это стандартная задача для предварительного анализа текста для вызовов PostgreSQL» * - нет, его стандартный способ, только когда ваш запрос открыт для атак SQL Injection. Используйте параметризованные запросы, и у вас нет этой проблемы в первую очередь! Кроме того, выполнение sql-запросов из javascript звучит как кошмар безопасности, ожидающий самого себя. – Jamiec

+0

На предыдущем плакате при запуске приложения NodeJS на сервере это нормально. –

ответ

4

replace('A','AA') заменит только первое заполнение "A" в вашей строке. Вы хотите «replaceAll», который вы должны использовать регулярное выражение с g флагом:

'Test AA'.replace(/A/g, 'AA'); // Test AAAA 

EDIT, чтобы ответить на ваш дальнейший вопрос. Чтобы построить выражение с использованием переменной, вам нужно будет использовать конструктор RegExp. Вот подробный пример:

var find = 'A'; 
var replacement = find + find; // AA; 
var regex = new RegExp(find, 'g'); 
var toReplace = 'Test AA'; 
var replaced = toReplace.replace(regex, replacement); 
console.log(replaced); // Test AAAA 
+0

Это просто! :) Оно работает! Спасибо!!! :) –

+0

И как вы это делаете, когда и текст, подлежащий замене, и текст, который нужно заменить, являются обе переменными? –

+0

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

Смежные вопросы