jQuery - заменить все скобки в строке - PullRequest
21 голосов
/ 02 февраля 2012

Я попробовал это:

mystring= mystring.replace(/"/g, "").replace(/'/g, "").replace("(", "").replace(")", "");

Это работает для всех двойных и одинарных кавычек, но для скобок, это только заменяет первую скобку в строке.

Как я могу заставить это работатьзаменить все скобки в строке с помощью JavaScript?Или заменить все специальные символы в строке?

Ответы [ 9 ]

33 голосов
/ 02 февраля 2012

Попробуйте следующее:

mystring= mystring.replace(/"/g, "").replace(/'/g, "").replace(/\(|\)/g, "");

Немного REGEX, чтобы взять эти надоедливые скобки.

21 голосов
/ 02 февраля 2012

Вы должны использовать что-то более похожее на это:

mystring = mystring.replace(/["'()]/g,"");

Причина, по которой он не работает для других, заключается в том, что вы забыли «глобальный» аргумент (g)

, обратите внимание, что[...] это класс персонажа.что-нибудь между этими скобками заменяется.

6 голосов
/ 02 февраля 2012

Вы должны быть в состоянии сделать это в одном операторе замены.

mystring = mystring.replace(/["'\(\)]/g, "");

Если вы пытаетесь заменить все специальные символы, вы можете использовать шаблон, подобный этому.

mystring = mystring.replace(/\W/g, "");

Что заменит любой несловарный символ.

2 голосов
/ 02 февраля 2012

Вы также можете использовать регулярные выражения, если вы ищете скобки, вам просто нужно их избежать.

mystring = mystring.replace(/\(|\)/g, '');

Это удалит все ( и ) во всей строке.

1 голос
/ 02 февраля 2012

Только одна замена сделает:

"\"a(b)c'd{e}f[g]".replace(/[\(\)\[\]{}'"]/g,"")
0 голосов
/ 06 марта 2017

Это может решить проблему: myString = myString.replace(/\"|\'|\(|\)/) Пример

0 голосов
/ 02 февраля 2012

Метод замены на основе строк не заменяет глобально. Таким образом, вы, вероятно, хотите использовать метод замены на основе регулярных выражений. Следует отметить:

Вам нужно экранировать ( и ), поскольку они используются для сопоставления групп:

mystring= mystring.replace(/"/g, "").replace(/'/g, "").replace(/\(/g, "").replace(/\)/g, "");
0 голосов
/ 02 февраля 2012

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

0 голосов
/ 02 февраля 2012

Это должно работать:

mystring= mystring.replace(/"/g, "").replace(/'/g, "").replace(/\(/g, "").replace(/\)/g, "");
...