2015-01-23 17 views
6

Voglio sostituire una stringa con un'altra. Ho trovato quando il valore di sostituzione contiene "$", la sostituzione avrà esito negativo. Quindi sto cercando di scappare dallo "$" per il "$$". Il codice è simile al seguente:javascript - Modo migliore per sfuggire ai segni del dollaro nella stringa utilizzata da String.prototype.replace

var str = ..., reg = ...; 
function replaceString(replaceValue) { 
    str.replace(reg, replaceValue.replace(/\$/g, '$$$$')); 
} 

Ma penso che sia brutto dato che ho bisogno di scrivere 4 segni di dollaro.

C'è qualche altro charatter che ho bisogno di scappare? E c'è un modo migliore per farlo?

risposta

13

C'è un modo per chiamare replace che ci consente di non preoccuparci di sfuggire a qualsiasi cosa.

var str = ..., reg = ...; 
function replaceString(replaceValue) { 
    return str.replace(reg, function() { return replaceValue }); 
} 
1

Sfortunatamente, niente che tu possa fare al riguardo.
È proprio come JavaScript funziona con le espressioni regolari.

Ecco un buon articolo con l'elenco di tutti i modelli di sostituzione si dovrebbe essere a conoscenza di: http://es5.github.io/#x15.5.4.11

+0

L'articolo non dice nulla su come evitarli. Piuttosto, sono la sintassi della stringa di sostituzione. – nhahtdh

+0

corretto. Ma vedi la domanda dell'OP: "Ci sono altri fattori che devo scappare?". L'articolo fornisce gli schemi che dovrebbe conoscere. –

+0

Penso che dovresti cambiare la dicitura in: "... lista di tutti i pattern di sostituzione, che il tuo metodo ha fatto un buon lavoro durante la fuga" – nhahtdh

6

Il tuo metodo per sfuggire alla stringa di sostituzione è corretta.

Secondo sezione 15.5.4.11 String.prototype.replace di ECMAScript specification edition 5.1, tutte le sequenze pezzi speciali inizia con $ ($&, $`, $', $n, $nn) e $$ specificare un singolo $ nella sostituzione.

Pertanto, è sufficiente sfuggire a tutti $ con doppiocome quello che si sta facendo in questo momento se il testo sostitutivo è pensato per essere trattato letteralmente.

Non esiste un altro modo conciso per eseguire la sostituzione per quanto posso vedere.

Problemi correlati