我正在从一个套接字读取并尝试调试一些正在进入的消息。现在,我正试图看看是否有任何“看不见的”字母偷偷过去我的正则表达式。我执行以下操作以获取文字字符串值。
socket.on('data', function (data) {
const message = data.toString('ascii');
let characters = [];
message.forEach((letter, i) => characters.push(message.charCodeAt(i)));
console.log(characters);
});
结果如下:
[58, 13, 10, 26]
我希望在没有(手动)查找ascii表上的每个字母的情况下获得更具人性的内容。也就是说,列表看起来更像是这样:
[':', '\r', '\n', 'ctrl-z']
// or
[':', 'carriage return', 'new line', 'substitution']
有没有办法用Node.js完成这个?
答案 0 :(得分:2)
在节点5.1中,您可以将字符串拆分为字符数组,然后将console.log拆分为数组。内置的console.log将打印非打印字符的转义码:
socket.on('data', function(data){
const message = data.toString('ascii');
console.log(message.split(''))
})
如果您使用较低版本的节点,则可以使用节点中的util包来获取角色的字符串文字表示。
这样的事情应该有效:
socket.on('data', function(data){
const message = data.toString('ascii');
console.log(message.split('').map(function(c){
return require('util').inspect(c);
}))
})
答案 1 :(得分:0)
使用message.charAt(i)
代替charCodeAt
。