首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用对象键作为变量替换文件中的文本

使用对象键作为变量替换文件中的文本
EN

Stack Overflow用户
提问于 2019-03-01 08:31:12
回答 1查看 394关注 0票数 0

我有以下代码,它应该使用对象键值调用api,然后打开一个文本文件,并用API数据替换与键匹配的文本。为简化起见,我删除了API,只需遍历它们的obj键,然后尝试替换。

代码语言:javascript
复制
const fs = require('fs')
const storage  = require('./db/storage')


const keys =  Object.keys(storage.MOVIES);

for (const key of keys) {
    fs.readFile('./db/movies_prebuilt.txt', 'utf8', function (err,data) {
        if (err) {
          return console.log(err);
        }
        //THIS LINE DOESNT WORK using key. but does work using an actual 
        string.
        var result = data.replace(key, "NOTWORKING");
        fs.writeFile('./movies.md', result, 'utf8', function (err) {
           if (err) return console.log(err);
        });
      });
    }

db/storage代码片段如下所示:

代码语言:javascript
复制
exports.MOVIES = {
    "Matrix_Score": "tt0133093",
    "2001_Space_Score": "tt0062622"
     ...
}

里面的替换文本看起来像这样

代码语言:javascript
复制
 ### Matrix_Score

我已经将for循环更改为data.replace("Matrix_Score","WORKING");,这非常好用。不能将密钥用作字符串吗?我想要使用它的唯一原因是,当我已经拥有它的时候,我不需要写另一个具有所有名称的数组或对象。

干杯!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-01 08:40:51

我认为下面的代码可能更接近我所理解的意图。fs.readFile返回所有文件内容,您可能希望替换所有键,而不仅仅是最后一个键。也不需要多次读取文件:

代码语言:javascript
复制
const fs = require('fs')
const storage  = require('./db/storage')

const keys =  Object.keys(storage.MOVIES);

fs.readFile('./db/movies_prebuilt.txt', 'utf8', function (err,data) {
  if (err) {
    return console.log(err);
  }
  for (const key of keys) {
    data = data.toString().replace(key, "NOTWORKING");
  }
  fs.writeFile('./movies.md', data, 'utf8', function (err) {
    if (err) return console.log(err);
  });
});

编辑以添加回原始点

fs.readFile通常返回一个缓冲区,该缓冲区需要被.toString'd才能被操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54936307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档