2012-01-26 15 views
12

¿Cómo puedo eliminar la pestaña de una cadena en javascript?Eliminar pestaña (' t') de la cadena javascript

cuando llegue mi cadena se trata como un amortiguador así:

<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'); 

    } 

y luego realizar las siguientes ...

por ejemplo, tengo estas líneas:

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

y solo quiero que sea:

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

por cierto, cuando lo haga:

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

esto es por eso que necesito el constructor String (...).

si no voy a usarlo, supongo que el objeto no tiene método de reemplazar.

contenido asumir es la cadena quiero analizarlo lo analiza por carta significado siguiente:

'\t session' 

se convierte en esto:

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

por qué?

+0

posible duplicado de [reemplazar todas las ocurrencias de una cadena] (http://stackoverflow.com/questions/6064956/replace-all-occurrences- in-a-string) –

+0

El hecho de que obtenga una matriz de caracteres parece poco probable (no puedo reproducirlo), pero podría estar relacionado con el hecho de que está utilizando el constructor 'String()', que no es necesario. Solo haz 'content.replace (...)'. –

+0

¿Estás a punto de 'evaluar' esa cadena? –

Respuesta

18

El problema probablemente sea en la forma de definir content.

Si content=='\t session',

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

implica que content==' session'.

En una nota de lado, el String(...) es innecesario.

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

logra el mismo resultado.

Editar:

String(array) no funciona como se espera.

Debe realizar el reemplazo antes de dividir la cadena o realizar el reemplazo en cada elemento de la matriz por separado.

En lugar de

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

tratar

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

Tenga en cuenta que replace('\t', '') reemplazará sólo la primera aparición de \t. Para ello reemplazar un mundial, utilice la expresión regular Alex K. sugirió:

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

dennis, la cosa es que me da contenido como un buffer, convirtiéndolo en string por toString(); entonces tengo que hacerlo con el constructor de cadenas ... ¿Alguna otra idea de cómo manejarlo? – Itzik984

+0

¿Podría mostrarnos el código que define 'content'? – Dennis

+0

yes ill edit it – Itzik984

20

Necesita una expresión regular para reemplazar todas las instancias;

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

(siendo g el indicador global)

/^\t+/ limita a la sustitución de que sólo lleva pestañas, /^\s+/ incluye espacios en blanco, que es lo que se necesita para "\t\t var" -> "var"

actualización

No ha dicho cómo se recibió el búfer & qué tipo es, mi suposición más cercana, aunque es algo extraño de recibir;

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, la cosa es que me da contenido como un buffer, convirtiéndolo en string por toString(); entonces tengo que hacerlo con el constructor de cadenas ... ¿Alguna otra idea de cómo manejarlo? – Itzik984

+0

¿Qué es "un buffer"? Y una vez que haya usado 'toString', tiene una cadena, por lo que todavía no es necesario usar el constructor de esa manera. –

+0

Debería poder 'var str = content.toString(). Replace (...);' Su ejemplo de ''s', 'e', ​​'s', 's', 'i', 'o ',' n'' es el resultado de mostrar un objeto Array que de forma predeterminada no admite '.replace' .. if' toString() 'falla algo está anulando/reimplementando algunos métodos y va a necesitar proporcionar más detalles de 'content' –

Cuestiones relacionadas