2014-04-02 21 views
16

Wie können Sie Null Bytes aus einer Zeichenfolge in Nodejs entfernen?Entfernen eines Nullzeichens aus einer Zeichenfolge in JavaScript

MyString\u0000\u0000\u00000 

Ich versuchte string.replace('\0', '');, aber es scheint nicht zu funktionieren. Gibt es ein Knotenpaket, das für das Manipulieren von Zeichenfolgen geeignet ist?

+1

haben Sie versucht mit '.trim()'? – kpull1

+0

Ja, scheint nicht zu funktionieren. – majidarif

+0

Mögliches Duplikat von [So entfernen Sie \ u0000 von der Zeichenfolge?] (Http://stackoverflow.com/questions/10297683/how-to-remove-u0000-from-string) –

Antwort

30

Es funktioniert, aber wie dies nur 1 Instanz eines Null-Byte entfernt. Sie müssen es mit regulären Ausdrücken zu tun und die g Modifikator

var string = 'MyString\u0000\u0000\u0000'; 
console.log(string.length); // 11 
console.log(string.replace('\0', '').length); // 10 
console.log(string.replace(/\0/g, '').length); // 8 
+0

oh richtig, das habe ich auch bemerkt. Warum konnte das passieren? Habe deine Lösung versucht und es funktioniert. Aber ist das der einzige Weg? Wie auch immer, kann in 7min akzeptieren. – majidarif

+1

Nun, '.trim()' soll Leerzeichen entfernen, keine Steuerzeichen. Der Weg dorthin ist '.replace()'. Wenn Sie trim-ähnliches Verhalten wollen, können Sie etwas wie 'string.replace (/^\ 0 + /, '') .replace (/ \ 0 + $ /, '')' verwenden. Dadurch bleibt '\ 0' in der Mitte der Saite. Aber ich kann mir kaum einen Fall vorstellen, in dem es Sinn machen würde. – akirk

4

Um Recht aller null trimmen (oder jedes andere Zeichen bearbeiten nur die reguläre Ausdrücke) in JavaScript Sie könnte so etwas wie dies tun wollen.

string.replace(/\0[\s\S]*$/g,''); 

So zum Beispiel:

var a = 'a\0\0test\nnewlinesayswhat!'; 
console.log(a.replace(/\0[\s\S]*$/g,'')); 

Ausgänge 'a'.

nach dem darauf schlafen, ein Index von mit substr könnte besser sein, wenn Ihr sicher Null irgendwo in string sein wird.

a.substr(0,a.indexOf('\0')); 

Oder eine Funktion, um zu überprüfen, wenn nicht sicher.

function trimNull(a) { 
    var c = a.indexOf('\0'); 
    if (c>-1) { 
    return a.substr(0, c); 
    } 
    return a; 
} 
Verwandte Themen