对于字符串中的每个字母,打印其ascii字符表示

时间:2015-12-07 16:48:30

标签: javascript node.js string ascii

我正在从一个套接字读取并尝试调试一些正在进入的消息。现在,我正试图看看是否有任何“看不见的”字母偷偷过去我的正则表达式。我执行以下操作以获取文字字符串值。

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完成这个?

2 个答案:

答案 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