What is strip-final-newline?
The strip-final-newline npm package is a simple utility that removes the final newline character from a string. This can be useful when you want to process text data and ensure that it does not end with a newline character, which might affect the handling of the text in certain situations.
What are strip-final-newline's main functionalities?
Strip final newline from a string
This feature allows you to remove the final newline character from a given string. The code sample demonstrates how to use the strip-final-newline package to strip the newline from the end of a string.
const stripFinalNewline = require('strip-final-newline');
const stringWithNewline = 'Hello World!\n';
const stringWithoutNewline = stripFinalNewline(stringWithNewline);
console.log(stringWithoutNewline); // 'Hello World!'
Other packages similar to strip-final-newline
newline-remove
The newline-remove package is similar to strip-final-newline in that it is designed to remove newline characters from strings. However, it may offer different options or behaviors, such as removing all newline characters, not just the final one.
trim-newlines
The trim-newlines package offers functionality to trim newline characters from the start and/or end of a string. It provides more options than strip-final-newline, which only removes the final newline character.
strip-final-newline
Strip the final newline character from a string or Uint8Array.
This can be useful when parsing the output of, for example, ChildProcess#execFile()
, as binaries usually output a newline at the end. You cannot use stdout.trimEnd()
for this as it removes all trailing newlines and whitespaces at the end.
Install
npm install strip-final-newline
Usage
import stripFinalNewline from 'strip-final-newline';
stripFinalNewline('foo\nbar\n\n');
const uint8Array = new TextEncoder().encode('foo\nbar\n\n')
new TextDecoder().decode(stripFinalNewline(uint8Array));
Performance
When using an Uint8Array
, the original value is referenced, not copied. This is much more efficient, requires almost no memory, and remains milliseconds fast even on very large inputs.
If you'd like to ensure that modifying the return value does not also modify the value passed as input, please use .slice()
.
const value = new TextDecoder().decode(stripFinalNewline(uint8Array).slice());