How can I replace newlines/line breaks with spaces in javascript?
You can use the .replace()
function:
words = words.replace(/\n/g, " ");
Note that you need the g
flag on the regular expression to get replace to replace all the newlines with a space rather than just the first one.
Also, note that you have to assign the result of the .replace()
to a variable because it returns a new string. It does not modify the existing string. Strings in Javascript are immutable (they aren't directly modified) so any modification operation on a string like .slice()
, .concat()
, .replace()
, etc... returns a new string.
let words = "a\nb\nc\nd\ne";
console.log("Before:");
console.log(words);
words = words.replace(/\n/g, " ");
console.log("After:");
console.log(words);
Code : (FIXED)
var new_words = words.replace(/\n/g," ");
In case there are multiple line breaks (newline symbols) and if there can be both \r
or \n
, and you need to replace all subsequent linebreaks with one space, use
var new_words = words.replace(/[\r\n]+/g," ");
See regex demo
To match all Unicode line break characters and replace/remove them, add \x0B\x0C\u0085\u2028\u2029
to the above regex:
/[\r\n\x0B\x0C\u0085\u2028\u2029]+/g
The /[\r\n\x0B\x0C\u0085\u2028\u2029]+/g
means:
[
- start of a positive character class matching any single char defined inside it:\r
- (\x0D
) -\n]
- a carriage return (CR)\n
- (\x0A
) - a line feed character (LF)\x0B
- a line tabulation (LT)\x0C
- form feed (FF)\u0085
- next line (NEL)\u2028
- line separator (LS)\u2029
- paragraph separator (PS)
]
- end of the character class+
- a quantifier that makes the regex engine match the previous atom (the character class here) one or more times (consecutive linebreaks are matched)/g
- find and replace all occurrences in the provided string.
var words = "car\r\n\r\nhouse\nhome\rcomputer\ngo\n\nwent";
document.body.innerHTML = "<pre>OLD:\n" + words + "</pre>";
var new_words = words.replace(/[\r\n\x0B\x0C\u0085\u2028\u2029]+/g," ");
document.body.innerHTML += "<pre>NEW:\n" + new_words + "</pre>";