我有一个变量,其中包含大量单词(数百万个),格式如下:
var words = "
car
house
home
computer
go
went
";
我想制作一个函数,用空格替换每个单词之间的换行符。所以结果看起来会像这样:
car house home computer go went
我有一个变量,其中包含大量单词(数百万个),格式如下:
var words = "
car
house
home
computer
go
went
";
我想制作一个函数,用空格替换每个单词之间的换行符。car house home computer go went
.replace()
函数:words = words.replace(/\n/g, " ");
请注意,您需要在正则表达式上使用g
标志,以便将所有换行符替换为空格,而不仅仅是第一个。
另外,请注意,您必须将 .replace()
的结果赋值给变量,因为它返回一个新字符串。 它不会修改现有的字符串。 Javascript 中的字符串是不可变的(它们不能直接被修改),因此对字符串进行任何修改操作,如.slice()
、.concat()
、.replace()
等,都会返回一个新字符串。
let words = "a\nb\nc\nd\ne";
console.log("Before:");
console.log(words);
words = words.replace(/\n/g, " ");
console.log("After:");
console.log(words);
如果有多个换行符(换行符号),并且可能同时出现\r
或\n
,而你需要将所有连续的换行符替换为一个空格,请使用:
var new_words = words.replace(/[\r\n]+/g," ");
查看正则表达式演示
要匹配所有Unicode换行符并替换/删除它们,请将 \x0B\x0C\u0085\u2028\u2029
添加到上面的正则表达式中:
/[\r\n\x0B\x0C\u0085\u2028\u2029]+/g
/[\r\n\x0B\x0C\u0085\u2028\u2029]+/g
表示匹配任何单个字符,包括回车符(CR)、换行符(LF)、行分隔符(LS)、段落分隔符(PS)、下一个行(NEL)、制表符和分页符。
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>";
代码:(已修复)
var new_words = words.replace(/\n/g," ");
/g
标志,只会替换第一次出现的) - Dr.KameleonreplaceAll
代替 replace
。myString.replaceAll('\n', ' ')
一些简单的解决方案可能如下:
words.replace(/(\n)/g," ");
/(\n)/
中需要括号?它们是不必要的。 - jfriend00const words = `He had
concluded that pigs
must be able
to fly in Hog Heaven.
`
document.body.innerHTML = "<pre>without-Trim-And-Remove:\n" + words + "</pre>";
trimAndRemoveSymbols=(text)=>{
return text.replace(/[\n]+/g, '').trim();
}
document.body.innerHTML += "<pre>Trim-And-Remove:\n" + trimAndRemoveSymbols(words) + "</pre>";