从node.js中的文件读取文本时,不会解释转义字符

时间:2018-02-08 09:03:33

标签: javascript node.js

从文件中读取字符串时,不会解释转义字符

文件内容:“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,但没有解决我的问题或接受了回答

2 个答案:

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