web-dev-qa-db-fra.com

Supprimer l'onglet ('\ t') de la chaîne javascript

Comment puis-je supprimer l'onglet d'une chaîne quelconque sur javascript?

quand je reçois ma chaîne, elle vient comme un tampon comme ceci:

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

  }

puis j'exécute ce qui suit ...

par exemple, j'ai ces lignes:

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

et je veux juste que ce soit:

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

au fait, quand je fais:

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

c'est pourquoi j'ai besoin du constructeur String (...).

si je ne l'utilise pas, je n'aurai pas d'objet à remplacer.

en supposant que le contenu est la chaîne que je veux analyser, il l'analyse par lettre, ce qui signifie ceci:

'\t session'

devient ceci:

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

pourquoi?

21
Itzik984

Le problème réside probablement dans la façon dont vous définissez content.

Si content=='\t session',

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

implique que content==' session'.

Sur une note latérale, la String(...) n'est pas nécessaire.

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

obtient le même résultat.

Modifier:

String(array) ne fonctionne pas comme prévu.

Vous devez soit effectuer le remplacement avant de fractionner la chaîne, soit effectuer le remplacement sur chaque élément du tableau séparément.

Au lieu de

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

essayer

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

Notez que replace('\t', '') ne remplacera que la première occurrence de \t. Pour effectuer un remplacement global, utilisez le RegExp Alex K. suggéré:

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

Vous avez besoin d'une expression régulière pour remplacer toutes les occurrences;

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

(g étant le drapeau mondial)

/^\t+/ se limite à remplacer les premiers onglets , /^\s+/ inclut tout espace blanc de tête, ce dont vous auriez besoin pour "\t\t var" -> "var"

Mise à jour

Vous n'avez pas dit comment le tampon est reçu et de quel type il s'agit, ma supposition la plus proche, bien que ce soit une chose étrange à recevoir;

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"
23
Alex K.