我有很长的HTML文件,我使用
转换为字符串 var str = fs.readFile(path, 'utf8', callBabk);
我想用其他东西替换部分字符串:
str = str.replace('toReplace', 'replaceWithThis');
但这不起作用。
有什么想法吗?
编辑:
完整的代码是:
exports.fileToString = function(path){
return new Promise(function(resolve, reject){
fs.readFile(path, 'utf8', function(err, data) {
if (err) {
return reject(err);
}
return resolve(data);
});
});
};
然后在另一个文件中:
var htmlString = '';
Promise.all([
htmlString = fileUtils.fileToString('../file.html'),
]).then(function() {
htmlString = htmlString.replace('toReplace', 'replaceWithThis');
console.log('htmlString: ' + htmlString); //This never prints
}. reject);
答案 0 :(得分:1)
fs.readFile()
不会返回它读取的数据,因此代码为:
var str = fs.readFile(path, 'utf8', callBabk);
完全错了。 fs.readFile()
是一个异步函数,结果仅在您传递的回调中可用。
fs.readFile(path, 'utf8', function(err, data) {
var str;
if (!err) {
str = data.replace(/toReplace/g, 'replaceWithThis');
// now do something with the modified string
}
});
P.S。如果要替换给定字符串的所有匹配项(不仅仅是第一个匹配项),您还需要在正则表达式上使用g
标志。
答案 1 :(得分:0)
// read the file
fs.readFile('./myfile.html', function read(err, data) {
if (err) {
throw err;
}
processContent(data)
});
//replace the strings
function processFile(content) {
var str = content.replace(/toReplace/g, 'replaceWithThis');
console.log(str);
}