2014-04-02 12 views
16

Düğümlerdeki bir dizeden boş baytları nasıl kaldırabilirsiniz?Bir javascript dizesindeki bir null karakterin kaldırılması

MyString\u0000\u0000\u00000 

string.replace('\0', '');'u denedim ama işe yaramıyor gibi görünüyor. Dizeleri işlemek için iyi bir düğüm paketi var mı?

+1

'.trim()' ile çalıştınız mı? – kpull1

+0

Evet, işe yaramıyor. arasında – majidarif

+0

Olası kopyalar [dizesinden \ u0000 nasıl kaldırılır?] (http://stackoverflow.com/questions/10297683/how-to-remove-u0000-from-string) –

cevap

30

Çalışır, ancak böyle sadece boş bayt 1 örneğini kaldırır. Sen Düzenli ifadeler ile bunu yapmak gerekir ve g değiştirici

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

sağ ah ben de fark ettim. Neden böyle olabilir? Çözümünüzü denedim ve işe yarıyor. Ama bu tek yol mu? Neyse, 7 dakika içinde kabul edebilir. – majidarif

+1

Eh, '.trim()', boşluk karakterlerini, denetim karakterlerini değil, kaldırmak içindir. Bu yüzden gitmenin yolu '.replace()' dır. Trim benzeri bir davranış istiyorsanız, string.replace (/^\ 0 + /, '') .replace (/ \ 0 + $ /, '') 'gibi bir şey kullanabilirsiniz. Bu, '\ 0' dizesini yalnızca dizenin ortasında bırakacaktır. Ama mantıklı olacağı bir durumu düşünemiyorum. – akirk

4

tüm boş hakkını kırpmak için (Ya da başka bir karakter sadece regex düzenleyin) JavaScript Eğer böyle bir şey yapmak isteyebilirsiniz. Örneğin bu şekilde

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

:

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

Outputs 'a'. senin emin boş yere dizede olacaksa

üzerine uyuduktan sonra, substr ile bir dizin daha iyi olabilir. Ya da emin olup olmadığını kontrol etmek için bir işlev.

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