gpt4 book ai didi

javascript - 如何像 String() 那样遵循转义序列

转载 作者:行者123 更新时间:2023-12-03 06:38:50 27 4
gpt4 key购买 nike

我有一个包含反斜杠转义序列的字符串,例如:

AB\0C\xff

是否有一种简单的解析方法,可以使用与 JavaScript 字符串解析相同的规则来解释反斜杠转义序列,以便上面的内容生成字节序列:

0x41 0x42 0x00 0x43 0xff

我尝试了String(line),但当然没有效果。

FWIW,这是一个简短的 node.js 程序来演示我所追求的内容:

'use strict'

const readline = require('readline');

var rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
});

rl.on('line', function(line) {
processLine(line);
});

function hexify(line) {
function hex(v) {
return ((v < 16) ? '0' : '') + v.toString(16);
};
var s=[];
for (var i=0; i<line.length; i++) {
s.push(hex(line.charCodeAt(i)));
};
return s.join(' ');
}

function honorEscapes(line) {
return String(line); // this doesn't do what I want
};

function processLine(line) {
console.log('raw ' + hexify(line));
console.log('parsed ' + hexify(honorEscapes(line)));
};

运行它:

$ node escape.js
AB\0\C\xff
raw 41 42 5c 30 5c 43 5c 78 66 66
parsed 41 42 5c 30 5c 43 5c 78 66 66

最佳答案

您可能正在寻找JSON.parse ,它解析 JSON strings包括转义字符。

当然,这并不包括 JavaScript string literals 中所有奇怪的转义。 。根据您确实需要的内容,手动添加它们,例如使用正则表达式:

.replace(/\\0/g, '\u0000')
.replace(/\\x([0-9a-fA-F]{2})/g, function(m, c) { return String.fromCharCode(parseInt(c, 16)); }

关于javascript - 如何像 String() 那样遵循转义序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38063317/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com