一个node中的字符串问题
发布于 7 年前 作者 Hiufan 3838 次浏览 来自 问答

864F72E2-4AD0-4185-BB51-F32C7F58A2A3.png 如图, 第一个,是用fs.readFileSync从文件中直接读取的内容,打印时是有格式的。 第二个,是用正则从文本中匹配到的,打印时带有换行符。 想请问一下大家,有没有办法将第二个的字符串转换成第一种呢。

5 回复

上下文代码?不行自己处理下

console.log($3.replace(/\\n/g, '\n'))

@magicdawn 这么说就有思路了。立马写了个函数来处理:

var escapeSpecialChars = function(str) {
    return str.replace(/\\n/g, '\n')
               .replace(/\\'/g, "\'")
               .replace(/\\"/g, '\"')
               .replace(/\\r/g, '\r')
               .replace(/\\t/g, '\t')
               .replace(/\\v/g, '\v')
               .replace(/\\f/g, '\f');
};

不过还是有点不太理解这是为什么

理解吗,就是,你用字符串输出 \n 你得怎么写呢 console.log("\n"); // 输出字符 \n 换行符打印呢 是 console.log("\n");// 输出换行符

这就是为什么要替换呢

理解了,终端里是把’\n’识别为’\n’这个字符,直接写’\n’就是直接解析为换行。

回到顶部