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への解析が理想的なソリューションです。

ただし、悪魔の擁護者を演じて、ファイルを1行ずつスキャンし、キーワードとターゲット値を比較する非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 に答える