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