2009-07-07 10 views
10

He estado trabajando en este problema por un par de horas seguidas y sin suerte. Ni idea de cómo esto es posible; Intentaré resumir.Al final ... ¡Javascript no reemplazará ' n'!

Estoy usando TinyMCE para insertar contenido nuevo en un DB, ese contenido se envía como una respuesta AJAX después de que se inserta en el DB y luego se muestra en la página, reemplazando algunos contenidos antiguos. Todo eso no es realmente relevante (por lo que puedo decir) al problema, pero sirve de fondo para el problema.

De todos modos, el texto de respuesta tiene '\ n' apropiadamente donde el contenido tiene saltos de línea. Parece que no puedo eliminar esos malditos '\ n' por mi vida. Probé una docena de combos de regex/reemplazo sin suerte. He verificado que no me estoy volviendo loco y que el código generalmente funciona al intentar reemplazar otras palabras dentro de esa cadena y eso funciona perfectamente bien, simplemente NO reemplazará '\ n'. Este es un código que he usado al intentar reemplazar el '\ n':

responseText = responseText.replace (/ \ r | \ n | \ r \ n/g, "");

responseText = responseText.replace (Array ("\ r", "\ n", "\ f", "\ r \ n", "\ n"), "");

Niether de aquellos que hacen algo con la variable. Lo alerté inmediatamente después para verificar cambios, nada. No tengo idea de si será útil, pero aquí hay un fragmento de un ejemplo '\ n' copiado y pegado que no desaparecerá O cambiará.

High School transcript</li>\n<li>SAT/ACT 

Como nota al margen, he tratado de hacer esto a través de PHP antes de la responseText es enviado de vuelta a javascript con un similares reemplazar & expresiones regulares y no funciona bien.

+0

Nota adicional: cuando se trata de caracteres especiales (es decir, '\ n',' \ r', etc.) Por lo general, desea utilizar comillas simples '' \ n'', ''\ r'' ya que, para la mayoría propósitos, está buscando un solo carácter en lugar de una cadena. –

+0

@DavidStarkey - No hay diferencia entre comillas simples y dobles en Javascript. La guía de estilo o la convención personal del equipo debería ser el principio rector http://stackoverflow.com/questions/3149192/difference-between-single-quotes-and-double-quotes-in-javascript – rinogo

Respuesta

24

¿Estás seguro de que es una nueva línea y no un literal "\ n" (que es una nueva línea escapada)?

Tal vez puedas probar: (nótese el doble barra invertida)

responseText = responseText.replace(/\\n/g, ""); 
+1

Fantástico. Te debo uno. Esto funcionó y tiene perfecto sentido después de pensar sobre la situación. Hombre que se estaba agravando ... ¡Salud! –

3
responseText = responseText.replace(/\n/g, ""); 

No se olvide de usar la bandera/g o de lo contrario sólo se sustituyó el primero!

+0

No funciona, y es prácticamente el mismo que uno que probé: responseText = responseText.replace (/ \ r | \ n | \ r \ n/g, ""); ¿Sí? –

+0

bien porque dijiste "el texto de la respuesta tiene '\ n' apropiadamente dondequiera que el contenido haya saltos de línea", lo intenté con la eliminación de saltos de línea y eliminé los saltos de línea. –

Cuestiones relacionadas