从文件中读取字符串时,不会解释转义字符
文件内容:“Hello world \ r \ n \ tTesting \ r \ n \ tlastline \ r \ t感谢你”
var file = fs.readFileSync('./file.txt','utf-8');
console.log(file);
//Output
Hello world\r\n\tTesting\r\n\tlastline\r\tthank you
使用Console.log()
的相同字符串console.log("Hello world\r\n Testing\r\n lastline\r\thank you");
//output
Hello world
Testing
thank you
我发现了类似的question,但没有解决我的问题或接受了回答
答案 0 :(得分:1)
readFileSync()
函数不知道您的文件包含特殊的元字符,它只会返回原始数据。
但是,您可以自己转换数据:
function unbackslash(s) {
return s.replace(/\\([\\rnt'"])/g, function(match, p1) {
if (p1 === 'n') return '\n';
if (p1 === 'r') return '\r';
if (p1 === 't') return '\t';
if (p1 === '\\') return '\\';
return p1; // unrecognised escape
});
}
遗憾的是,仅仅返回'\' + p1
是不可能的,因为只有完整的字符串文字才会被转义。
答案 1 :(得分:1)
试试这个:
function parseString(str) {
return str.replace(/\\r/g, '\r').replace(/\\n/g, '\n').replace(/\\t/g, '\t')
}
var file = fs.readFileSync('./file.txt', 'utf-8')
file = parseString(file)
console.log(file)