Replace one string with another string in a Node.js Stream. Only supports straight string replacement, no regexs. Handles replacing strings that span multiple chunks in the stream correctly.
Written by Thomas Parslow (almostobsolete.net and tomparslow.co.uk) for IORad (iorad.com) and released with their kind permission.
npm install --save string-replace-stream
import stringReplaceStream from 'string-replace-stream';
var all = [];
fs.createReadStream('data.txt')
.pipe(stringReplaceStream("awesome", "rather good"))
.pipe(process.stdout);
Buffers are converted to strings before search and replace is performed. You can specify an encoding (it defaults to utf8):
stringReplaceStream("awesome", "rather good"), {encoding: "ascii"})
There are a couple of other similar libraries on NPM already:
replacestream: More fully featured, supports regular expressions. Can be a lot slower depending on the input (in my testing it does particulary badly with large streams in which the search string only seldom appears)
stream-replace: Much faster (about 5 times in my testing) but doesn't always give the right answer. Can't handle a search string that spans 3 or more chunks.
Fixed or improved stuff? Great! Send me a pull request through GitHub or get in touch on Twitter @almostobsolete or email at tom@almostobsolete.net