如何在NodeJS中从字符串中删除空字节?
MyString\u0000\u0000\u00000
我尝试过string.replace('\0', '');
,但好像不起作用。有没有适合操作字符串的Node.js包?
如何在NodeJS中从字符串中删除空字节?
MyString\u0000\u0000\u00000
我尝试过string.replace('\0', '');
,但好像不起作用。有没有适合操作字符串的Node.js包?
它可以工作,但是这样只会移除一个空字节的实例。你需要使用正则表达式和修饰符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
.trim()
的作用是删除空格,而不是控制字符。因此,更好的选择是使用.replace()
。如果你想获得类似于trim的行为,可以使用类似于string.replace(/^\0+/, '').replace(/\0+$/, '')
的方法。这将保留字符串中间的\0
。但我很难想象这种情况有什么意义。 - akirk以下正则表达式可以将空字节及其后面的内容从字符串中删除。
string.replace(/\0.*$/g,'');
要在JavaScript中剪切掉所有null的右侧(或任何其他字符,只需编辑正则表达式),您可能希望执行类似于此的操作。
string.replace(/\0[\s\S]*$/g,'');
例如:
var a = 'a\0\0test\nnewlinesayswhat!';
console.log(a.replace(/\0[\s\S]*$/g,''));
输出'a'。
经过深思熟虑后,如果您确定null将在字符串中出现,使用带有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;
}
.replace(/\0.*$/, "")
命令。g
标志是多余的;这个指令只需要匹配一次就能去掉它。 - Константин Ван您还可以检查字符代码并使用它来过滤掉空字节。
function removeNullBytes(str){
return str.split("").filter(char => char.codePointAt(0)).join("")
}
console.log(removeNullBytes("MyString\u0000\u0000\u00000"))
它记录了MyString0
,因为您在最后一个空字节之后放置了额外的0,并且您只提到想要删除空字节本身。
此帖子中的其他答案将消除空字节后的所有内容,这可能是所需的行为,也可能不是。
.trim()
吗? - kpull1