2014-01-21 7 views
5

ich eine Textdatei, die wie folgt aussieht:eine Datei node.js mit ändern

./4F6cFLnAAFc.png 
./4Flj9plmKGQ.png 
./4fQeHtSdw80.png 
./4I9iibPLdBw.png 
./4J-dRA3MGc8.png 
./4mdEsouIXGM.png 
./4-_-wQc3EGE.png 
./595Tiga1gIg.png 
./60u_ctp6UIw.png 
./64bH_27Ehoc.png 
./64_ZfIemRGM.png 
./66pQLO--Ghk.png 
./69rDtSpshAw.png 
./69-YUSazuic.png 

Ich mag die . am Anfang jeder Zeile ersetzen mit ‚myString‘ mit node.js. So wird jeder am Ende wie folgt aussehen: myString/4F6cFLnAAFc.png

Ich versuche, einen regulären Ausdruck zu verwenden, aber ich vermute, dass es mit Lese-und Schreib-Streams getan werden kann.

var fs = require('fs'); 

fs.readFile('filelist.txt', 'utf-8', function(err, data){ 
    if (err) throw err; 

    console.log(typeof(data)); // string 

    data.replace(/\.\/+/, 'myString'); 

}); 

Welche Regex funktioniert oder was ist die beste Möglichkeit, diese Datei mit Knoten zu bearbeiten? Erfasst, was den Zeitraum folgt ((.+)) und ersetzt die gesamte /^\.(.+)/gm

Es führt eine globale, Multi-Line Spiel (/gm) für alle Zeilen, die mit einem Punkt (^\.) beginnen:

Antwort

24

Hier sind zwei Optionen für Sync oder Async je nachdem, was Sie wollen.

var fs = require('fs'); 

function readWriteAsync() { 
    fs.readFile('filelist.txt', 'utf-8', function(err, data){ 
    if (err) throw err; 

    var newValue = data.replace(/^\./gim, 'myString'); 

    fs.writeFile('filelistAsync.txt', newValue, 'utf-8', function (err) { 
     if (err) throw err; 
     console.log('filelistAsync complete'); 
    }); 
    }); 
} 

function readWriteSync() { 
    var data = fs.readFileSync('filelist.txt', 'utf-8'); 

    var newValue = data.replace(/^\./gim, 'myString'); 

    fs.writeFileSync('filelistSync.txt', newValue, 'utf-8'); 

    console.log('readFileSync complete'); 
} 

readWriteAsync(); 
readWriteSync(); 
2

sollten Diese Regex arbeiten Zeichenfolge mit 'myString' verkettet mit dem erfassten Wert ($1).

var fs = require('fs'), 
fileList = '/filelist.txt'; 

fs.readFile(fileList, function(err, data) { 
    if(err) throw err; 
    data = data.toString(); 
    data = data.replace(/^\.(.+)/gm, 'myString$1'); 
    fs.writeFile(fileList, data, function(err) { 
     err || console.log('Data replaced \n', data); 
    }); 
});