2

假设我有一个名为 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!");
        }
}); 
4

2 回答 2

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
  }
}

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

于 2012-12-26T16:31:09.513 回答
0

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

但是,让我玩个鬼鼓吹,提供非json的解决方案,就是逐行扫描文件,比较关键字和目标值。如果它们匹配,那么我们将值分配给一个变量。

当然,这假设数据格式严格如您在此处显示的那样。也就是说,对于每一行,都有一个 (Keyword:Value) 对。如果没有,这可能会提高。

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
于 2012-12-26T17:22:56.267 回答