2009-07-07 7 views
10

Ho avuto questo problema per un paio d'ore e ora ho zero fortuna. Non ho idea di come sia possibile; Proverò a riassumere.Alla fine di witt ... Javascript non sostituirà ' n'!

Sto utilizzando TinyMCE per inserire nuovo contenuto in un DB, tale contenuto viene inviato come risposta AJAX dopo che è stato inserito nel DB e quindi mostrato nella pagina, sostituendo alcuni vecchi contenuti. Tutto ciò non è realmente pertinente (per quanto posso dire) al problema, ma serve come sfondo del problema.

In ogni caso, il testo di risposta ha '\ n' appropriatamente ovunque il contenuto abbia interruzioni di riga. Non riesco a rimuovere quei dannati '\ n' per la vita di me. Ho provato una dozzina di regex/sostituisci combo con zero fortuna. Ho verificato che non sto perdendo la testa e che il codice generalmente funziona tentando di sostituire altre parole all'interno di quella stringa e che funziona perfettamente bene - semplicemente NON sostituirà '\ n'. Ecco un codice che ho provato a sostituire il codice "\ n":

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

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

Nulla di quelli che fanno qualcosa alla variabile. Lo avverto subito dopo aver verificato le modifiche, nada. Non ho idea se sarà d'aiuto, ma ecco un frammento di un esempio '\ n' copia-incollato che non scomparirà o cambierà.

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

Come nota a margine, ho provato a fare questo tramite PHP prima che il responseText viene inviato al javascript con una simile sostituzione & regex e non funziona neanche.

+0

Nota aggiuntiva: quando si tratta di caratteri speciali (ad esempio '\ n',' \ r', ecc.) In genere si desidera utilizzare virgolette singole '' \ n'', ''\ r'' poiché, per la maggior parte scopi, stai cercando un singolo carattere piuttosto che una stringa. –

+0

@DavidStarkey - Non c'è differenza tra virgolette singole e doppie in Javascript. La guida allo stile del team o la convenzione personale dovrebbero essere il principio guida http://stackoverflow.com/questions/3149192/difference-tra i-single-quotes-and-double-quotes-in-javascript – rinogo

risposta

24

Sei sicuro che sia una nuova riga e non un letterale "\ n" (che è una nuova riga di escape)?

Prova a modificare: (si noti la doppia barra rovesciata)

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

Fantastic. Ti devo. Questo ha funzionato e ha perfettamente senso dopo aver pensato alla situazione. L'uomo che si stava aggravando ... Salute! –

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

Non dimenticare di usare il flag g/oppure solo il primo sarà sostituito!

+0

Non funziona ed è praticamente uguale a quello che ho provato: responseText = responseText.replace (/ \ r | \ n | \ r \ n/g, ""); Sì? –

+0

bene da quando hai detto "il testo di risposta ha '\ n' appropriatamente ovunque il contenuto avesse interruzioni di riga", l'ho provato con la rimozione delle interruzioni di riga e ha rimosso le interruzioni di riga. –

Problemi correlati