2012-02-02 17 views
17

He intentado esto:jQuery - Reemplazar todos los paréntesis en una cadena

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

Funciona para todas las comillas dobles e individuales pero para paréntesis, esto sólo sustituye a la primera paréntesis en la cadena.

¿Cómo puedo hacer que funcione para reemplazar todos los paréntesis en la cadena mediante JavaScript? O reemplazar todos los caracteres especiales en una cadena?

+0

Esto no es jQuery, su javascr simplemente norma ipt – rickyduck

+0

¡Uy! Espero que entienda el requisito, necesito hacer esto ya sea por jquery o javascript estándar. ¿Podrías ayudarme? – HaBo

Respuesta

26

intente lo siguiente:

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

Un poco de expresión regular para agarrar esos paréntesis molestos.

6

Debería poder hacer esto en una sola declaración de reemplazo.

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

Si usted está tratando de reemplazar todos los caracteres especiales es posible que desee utilizar un patrón como este.

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

Que reemplazará cualquier carácter no verbal.

0

Eso debería funcionar:

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

que puedes usar algo más parecido a esto:

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

La razón de que no estaba trabajando para los demás es porque se le olvidó el argumento "global" (g)

tenga en cuenta que [...] es una clase de caracteres. cualquier cosa entre esos paréntesis es reemplazada.

+0

¿No necesita escapar de los paréntesis? –

+1

@MattFellows no mientras está en una clase de personaje. (Tiendo a poner personajes especiales en las clases de personajes solo para que no tenga que escapar de ellos ... lo hace más legible para mí al menos: P) –

+1

@MattFellows Añadiré sin embargo que las excepciones a esto son '[' , ']' y '\\' que necesitan escaparse. –

0

Esto se debe a que para reemplazar varias ocurrencias debe usar una expresión regular como la cadena de búsqueda donde está utilizando una cadena literal. Como ha encontrado, la búsqueda por cadenas solo reemplazará la primera ocurrencia.

2

También puede utilizar una experession regular si está buscando paréntesis, solo necesita escaparse de ellos.

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

Esto eliminará todos los ( y ) en toda la cadena.

0

El método de sustitución basado en cadenas no reemplazará globalmente. Como tal, es probable que desee utilizar el método de sustitución basado en expresiones regulares.Debe tenerse en cuenta:

tiene que escapar ( y ) ya que se utilizan para el bloque de coincidencia:

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

Pero no existe el concepto de "grupo" para la versión no regex de 'replace' que usa el OP. –

+0

Eso es cierto, pero para obtener una sustitución global necesitas usar una expresión regular, creo, de ahí por qué he sugerido una expresión regular, y entonces mi afirmación es cierta. –

+0

Es cierto, pero solo es un poco IMO engañoso ya que el problema de agrupación no fue la causa del problema original del OP. Creo que vale la pena mencionar que estás convirtiendo su 'replace's basado en cadenas en' replace's basado en expresiones regulares. –

1

Sólo una reemplazan hará:

"\"a(b)c'd{e}f[g]".replace(/[\(\)\[\]{}'"]/g,"") 
0

Esto puede resolver el problema: myString = myString.replace(/\"|\'|\(|\)/) Example

Cuestiones relacionadas