2012-01-26 12 views
12

Come posso rimuovere la scheda da una stringa qualsiasi su javascript?Rimuovere la scheda (' t') dalla stringa javascript

quando ricevo la mia stringa viene come un buffer come questo:

<Buffer 0d 0a 3c 25 72 65 73 70 6f 6e 73 65 2e 73 74 61 74 75 73 20...> 

function translate(data) { 

    var content = data.toString().split('\r\n'); 

    } 

e poi eseguire le seguenti ...

per esempio, ho queste righe:

'\t\t var session = request.getSession();' 
'\t\t session["user"] = {};' 

e voglio solo che sia:

'var session = request.getSession();' 
'session["user"] = {};' 

tra l'altro, quando lo faccio:

content=String(content).replace('\t',''); 

questo è il motivo per cui ho bisogno il costruttore String (...).

se non lo uso, non è possibile sostituire l'oggetto.

contenuti supponendo che è la stringa che voglio analizzarlo analizza con lettera significato questo:

'\t session' 

diventa questo:

's','e','s','s','i','o','n' 

perché?

+0

possibile duplicato di [sostituire tutte le occorrenze di una stringa] (http://stackoverflow.com/questions/6064956/replace-all-occurrences- in-a-string) –

+0

L'acquisizione di una serie di caratteri sembra improbabile (non riesco a riprodurla), ma potrebbe essere correlata al fatto che si sta utilizzando il costruttore 'String()', che non è necessario. Basta fare 'content.replace (...)'. –

+0

Stai per "valutare" quella stringa? –

risposta

18

Il problema è probabilmente nel modo in cui si definisce content.

Se content=='\t session',

`content=String(content).replace('\t','');` 

implica che content==' session'.

Su una nota a margine, lo String(...) non è necessario.

`content=content.replace('\t','');` 

raggiunge lo stesso risultato.

Edit:

String(array) non funziona come previsto.

È necessario eseguire la sostituzione prima di dividere la stringa o eseguire la sostituzione su ogni elemento dell'array separatamente.

Invece di

var content = data.toString().split('\r\n'); 
content=String(content).replace('\t',''); 

prova

var content = data.toString().replace('\t', '').split('\r\n'); 

noti che replace('\t', '') sostituirà solo la prima occorrenza di \t. Per fare una sostituzione globale, utilizzare il RegExp Alex K. suggerito:

var content = data.toString().replace(/\t/g, '').split('\r\n'); 
+0

dennis, il fatto è che ottengo il contenuto come buffer, trasformandolo in stringa con toString(); quindi devo farlo con il costruttore di stringhe ... qualche altra idea su come gestirlo? – Itzik984

+0

Puoi mostrarci il codice che definisce 'contenuto'? – Dennis

+0

sì male editalo – Itzik984

20

È necessario un regexp per sostituire tutte le occorrenze;

content = content.replace(/\t/g, ''); 

(g essendo il flag globale)

/^\t+/ limita alla sostituzione che porta solo schede, /^\s+/ include un qualsiasi spazio che è quello che si avrebbe bisogno per "\t\t var" -> "var"

Aggiornamento

Non hai ancora detto come viene ricevuto il buffer & di che tipo si tratta, la mia ipotesi più vicina sebbene sia una cosa strana da ricevere;

var test_buffer_array = "\x0d \x0a \x3c \x25 \x72 \x65 \x73 \x70 \x6f \x6e \x73 \x65 \x2e \x73 \x74 \x61 \x74 \x75 \x73 \x20".split(" ") 

translate(test_buffer_array); 

function translate(data) { 
    var content = data.join("").replace(/^\t+/gm, ''); 
    print(content); 
} 

result: "<%response.status" 
+0

Alex, il fatto è che ottengo il contenuto come buffer, trasformandolo in stringa con toString(); quindi devo farlo con il costruttore di stringhe ... qualche altra idea su come gestirlo? – Itzik984

+0

Che cos'è "un buffer"? E una volta che hai usato 'toString', hai una stringa, quindi non c'è ancora bisogno di usare il costruttore in questo modo. –

+0

Dovresti essere in grado di 'var str = content.toString(). Replace (...);' Il tuo esempio di ''s', 'e', ​​'s', 's', 'i', 'o ',' n'' è il risultato della visualizzazione di un oggetto Array che di default non supporta '.replace' .. se' toString() 'fallisce qualcosa sta sovrascrivendo/reimplementando alcuni metodi e avrai bisogno di fornire maggiori dettagli di 'contenuto' –

Problemi correlati