Ответ, предоставленный PointedEars, - это все, что нужно большинству из нас. Но, следуя ответу Матиаса Биненса, я отправился в путешествие по Википедии и нашел его: https://en.wikipedia.org/wiki/Newline .
Ниже приводится функция, которая реализует все, что вышеупомянутая вики-страница считает «новой строкой» во время этого ответа.
Если что-то не подходит для вашего случая, просто удалите это. Кроме того, если вы ищете производительность, это может быть не так, но для быстрого инструмента, который выполняет работу в любом случае, это должно быть полезно.
// replaces all "new line" characters contained in `someString` with the given `replacementString`
const replaceNewLineChars = ((someString, replacementString = ``) => { // defaults to just removing
const LF = `\u{000a}`; // Line Feed (\n)
const VT = `\u{000b}`; // Vertical Tab
const FF = `\u{000c}`; // Form Feed
const CR = `\u{000d}`; // Carriage Return (\r)
const CRLF = `${CR}${LF}`; // (\r\n)
const NEL = `\u{0085}`; // Next Line
const LS = `\u{2028}`; // Line Separator
const PS = `\u{2029}`; // Paragraph Separator
const lineTerminators = [LF, VT, FF, CR, CRLF, NEL, LS, PS]; // all Unicode `lineTerminators`
let finalString = someString.normalize(`NFD`); // better safe than sorry? Or is it?
for (let lineTerminator of lineTerminators) {
if (finalString.includes(lineTerminator)) { // check if the string contains the current `lineTerminator`
let regex = new RegExp(lineTerminator.normalize(`NFD`), `gu`); // create the `regex` for the current `lineTerminator`
finalString = finalString.replace(regex, replacementString); // perform the replacement
};
};
return finalString.normalize(`NFC`); // return the `finalString` (without any Unicode `lineTerminators`)
});