2015-07-29 2 views
1

Я использую следующий код, чтобы получить конкретный файл, который находится в моей папке c, . Вопрос в том, как получить конкретный контент внутри этого файла, например У меня есть текстовый файл и контент являетсяполучить конкретное содержимое файла через узел js

name:test 1 test2 test 3 
user: foo bar 

Мне нужно, что, когда файл был прочитан, чтобы получить test1 test2 test3 как «строки», когда я нахожу «ключ» имени в текстовом файле. Как я могу это сделать?

fs = require('fs') 
fs.readFile('c//myfile.txt', 'utf8', function (err,data) { 
    if (err) { 
     return console.log(err); 
    } 

}); 

ответ

1

Другого ответа будет иметь проблемы, когда ваши Значение содержит ':'. Например, когда ваша строка «name: bla: bli: blub», вы получите только «bla».

Так что это мое предположение, что не будет иметь эту проблему:

Вы можете поместить этот фрагмент в свой метод ReadFile:

var keyValueObject = {}; 
data.split("\n").forEach(function(element) { 
    var keyValueSeperatorPosition = element.indexOf(':'); 
    var key = element.substr(0, keyValueSeperatorPosition); 
    var value = element.substring(keyValueSeperatorPosition + 1); 
    keyValueObject[key] = value; 
}); 

Вы можете получить доступ к данным с помощью:

keyValueObject['name'] 
+0

он, очевидно, говорит о парах ключевых значений. Поведение вашего ответа не имеет никакого другого выхода, кроме моего, потому что ваше решение будет пытаться читать более 1 строки, хотя:) –

+0

все еще значения могут содержать символ ':', который будет отбрасывать все, что будет после этого в вашем фрагменте Кроме того, мое решение отлично работает с несколькими строками. О, не понимаю, почему он будет вести себя по-разному с несколькими строками, тогда как вы оба разделите на новую строку и итерации по каждой строке. – Schneeez

+0

да, вы правы, я пропустил прочтение –

1

EDIT1: сделать это немного более общим в настоящее время. keyVals теперь массив объектов с ключевым и VAL паром файла

fs = require('fs') 
var keyVals = []; 
fs.readFile('c//myfile.txt', 'utf8', function (err,data) { 
    if (err) { 
     return console.log(err); 
    } 
    var lines = data.split('\n'); 

    lines.forEach(function(line){ 
     var pair = line.split(':'); 
     keyVals.push({key:pair[0],val:pair[1]}); 
    }); 
}); 

доступа это следующим образом:

keyVals.forEach(function(element){ 
    console.log(element.key, element.value); 
}) 

Я надеюсь, что это помогает