Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:如何从文本文件的特定部分加载数据?_Javascript_Node.js - Fatal编程技术网

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

Javascript:如何从文本文件的特定部分加载数据?,javascript,node.js,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(

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

您可以将文件读取为文本,然后使用正则表达式查找文本:

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

可以生成和解析,而无需任何字符串争用;您可以将对象序列化。

解析为JSON是理想的解决方案

但是,让我来扮演devils advocate的角色,并提供非json解决方案,它只是逐行扫描文件,将关键字与目标值进行比较。如果它们匹配,那么我们将该值赋给一个变量

当然,这假设数据格式严格如您在这里所示。也就是说,对于每一行,都有一个(关键字: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

如果您自己编写文件,为什么不先使用JSON呢?可能不需要搜索。我没有使用Node.js,所以我不知道是否有用于读取文本的插件,但从Javascript的角度来看,您可以使用正则表达式读取字符串的特定部分。我完全同意卢卡斯。你真的应该考虑JSON。这将使阅读(和写作)更加容易。一旦你将JSON文件内容解析成JS对象,阅读就可以像
object['Oranges']['Purchased']
(当然取决于你是如何写出来的)@Erik你能接受一些答案吗?你不需要在regex文本之前添加
new
。从技术上讲,这个例子不是有效的JSON,因为JSON需要引用属性。但是JSON库可以解决这个问题。使用
新的正则表达式(…)
或者简单地
/…/
啊,谢谢,修复了。是的,我从
new RegExp()
切换到了文字语法,最后在两者之间写了一些东西。我还更改了JSON语法。谢谢大家。转换为JSON。我已经知道这会让一切变得更容易。