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

假设我有一个名为test.txt的文本文件,内容如下:

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

我怎样才能search文本文件的“Oranges.Purchased”,抓住它后面的数值,并将其应用到一个JavaScriptvariables?

为了logging,我正在使用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!"); } }); 

你可以用文本阅读文件,然后使用正则expression式来查找你的文本:

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

虽然你会想要防弹(检查错误,不要假设你find了文本等)。

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

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

没有任何string争吵可以生成和parsing; 你可以序列化你的对象。

parsing到JSON是这里的理想解决scheme。

但是,让我扮演魔鬼的主张,并提供非JSON解决scheme,它只是逐行扫描文件,比较关键字与目标值。 如果它们匹配,那么我们将该值赋给一个variables。

当然,这里假定数据格式严格如您在这里所示。 也就是说,对于每一行,都有一个(关键字:值)对。 否则,这可能会提高。

 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