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