Javascript:如何从文本文件的特定部分加载数据?

时间:2012-12-26 16:18:34

标签: javascript node.js

假设我有一个名为test.txt的文本文件,其中包含以下内容:

Apples.Purchased: 100
Oranges.Purchased: 202
Bananas.Purchased: 140

如何在文本文件中搜索“Oranges.Purchased”,抓取其背后的数值并将其应用于javascript变量?

为了记录,我使用fs.write来保存数据:

var fs = require('fs');
fs.writeFile("test.txt", outputdata, function(err) {
        if(err) {
        console.log(err);
        } else {
            console.log("The file was saved!");
        }
}); 

2 个答案:

答案 0 :(得分:1)

您可以以文本形式阅读该文件,然后使用正则表达式查找文本:

fs.readFile("test.txt", function(err, data){
  var regex = /^Oranges.Purchased: ([0-9]+)/;
  var result = regex.exec(data);
  console.log(result[1]);
});

虽然你想要防弹(检查错误,不要只是假设你找到了文本等)。

但我一般不推荐这种做法。为什么不把文件写成JSON:

{
  "Apples": {
    "Purchased": 100
  },
  "Oranges": {
    "Purchased": 140
  }
  "Bananas": {
    "Purchased": 202
  }
}

可以在没有任何字符串争论的情况下生成和解析;你可以序列化你的对象。

答案 1 :(得分:0)

解析为JSON是这里的理想解决方案。

然而,让我扮演恶魔倡导者并提供非json解决方案,它只是逐行扫描文件,将关键字与目标值进行比较。如果它们匹配,那么我们将值赋给变量。

当然,这假设数据格式严格按照您在此处所示。也就是说,对于每一行,都有一个(关键字:值)对。如果没有,这可能会提高。

target = 'Oranges.Purchased'
value_to_save = None
file = open('/tmp/contents.txt', 'r')

for i in file.readlines():
    value_pair = i.split(':')
    if value_pair[0].strip('') == target:
        value_to_save = value_pair[1].strip('')
        break

print value_to_save