Удаление нулевого символа из строки в javascript

Как удалить нулевые байты из строки в nodejs?

MyString\u0000\u0000\u00000

Я попробовал string.replace('\0', '');, но он не работает. Есть ли какой-либо пакет node, который хорош для управления строками?

Ответы

Ответ 1

Он работает, но он удаляет только один экземпляр нулевого байта. Вам нужно сделать это с помощью регулярных выражений и модификатора g

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

Ответ 2

Чтобы обрезать справа от всех нулей (или любой другой символ, просто отредактировав регулярное выражение) в JavaScript, вы можете сделать что-то вроде этого.

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

Итак, например:

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

Выводит 'a'.

после сна на нем индекс с substr может быть лучше, если ваш верный нуль будет где-то в строке.

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

Или функция, чтобы проверить, не уверены ли.

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