Javascript 如何删除字符串中的所有换行符

Javascript 如何删除字符串中的所有换行符,javascript,regex,string,Javascript,Regex,String,我在文本区域中有一个文本,我使用.value属性读取它 现在,我想使用.替换为正则表达式从我的文本中删除所有换行符(按Enter键时生成的字符),但如何在正则表达式中指示换行符 如果不可能,还有其他方法吗?您可以在正则表达式中使用\n表示换行符,使用\r表示回车符 var str2 = str.replace(/\n|\r/g, ""); 不同的操作系统使用不同的行尾,不同的行尾是\n和\r的混合。此正则表达式将替换所有的正则表达式。正则表达式中的换行符是\n,因此您的脚本将是 var tes

我在文本区域中有一个文本,我使用.value属性读取它

现在,我想使用.替换为正则表达式从我的文本中删除所有换行符(按Enter键时生成的字符),但如何在正则表达式中指示换行符


如果不可能,还有其他方法吗?

您可以在正则表达式中使用
\n
表示换行符,使用
\r
表示回车符

var str2 = str.replace(/\n|\r/g, "");

不同的操作系统使用不同的行尾,不同的行尾是
\n
\r
的混合。此正则表达式将替换所有的正则表达式。

正则表达式中的换行符是\n,因此您的脚本将是

var test = 'this\nis\na\ntest\nwith\newlines';
console.log(test.replace(/\n/g, ' '));

如何找到换行符因操作系统编码而异。Windows将是
\r\n
,但Linux只使用
\n
,而苹果使用
\r

我发现这一点:

这应该可以删除所有类型的换行符。

换行符(更好:换行符)可以是回车符(旧Mac上的CR,
\r
)、换行符(LF,
\n
,在Linux等Unices上)或CR后跟LF(
\r\n
,在WinDOS上)。(与另一个答案相反,这与字符编码无关。)

因此,匹配所有变体的最有效的
RegExp
literal是

/\r?\n|\r/
如果要匹配字符串中的所有换行符,请使用全局匹配

/\r?\n|\r/g
分别。然后按照其他几个答案中的建议,继续使用
replace
方法。(可能您不想删除换行符,而是将其替换为其他空格,例如空格字符,以便单词保持完整。)

var str=“\n这是一个字符串\n\n\n”
console.log(str);

console.log(str.trim())如果要删除所有控制字符,包括CR和LF,可以使用以下命令:

myString.replace(/[^\x20-\x7E]/gmi, "")
yourString.replace(/\r?\n?/g, '')

它将删除所有不可打印的字符。ASCII十六进制空间
0x20-0x7E
内的所有字符。请根据需要随意修改十六进制范围。

尝试以下代码。它适用于所有平台

var break_for_winDOS = 'test\r\nwith\r\nline\r\nbreaks';
var break_for_linux = 'test\nwith\nline\nbreaks';
var break_for_older_mac = 'test\rwith\rline\rbreaks';

break_for_winDOS.replace(/(\r?\n|\r)/gm, ' ');
//output
'test with line breaks'

break_for_linux.replace(/(\r?\n|\r)/gm, ' ');
//output
'test with line breaks'

break_for_older_mac.replace(/(\r?\n|\r)/gm, ' ');
// Output
'test with line breaks'

PointedEars提供的答案是我们大多数人所需要的一切。但按照Mathias Bynens的回答,我去了维基百科,发现了这个:

下面是一个下拉函数,它实现了上面的Wiki页面在回答此问题时认为是“新行”的所有内容

如果有东西不适合你的情况下,只是删除它。此外,如果您正在寻找性能,这可能不是它,但对于一个在任何情况下都能完成这项工作的快速工具,这应该是有用的。


最简单的解决办法是:

let str = '\t\n\r this  \n \t   \r  is \r a   \n test \t  \r \n';
str.replace(/\s+/g, ' ').trim();
console.log(str); // logs: "this is a test"
.replace()
with
/\s+//g
regexp正在将整个字符串中的所有空格字符组更改为单个空格,然后我们
.trim()
删除文本前后所有超出空格的结果

被视为空白字符:

[\f\n\r\t\v​\u00a0\u1680​\u2000​-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]

要删除新行字符,请使用以下命令:

myString.replace(/[^\x20-\x7E]/gmi, "")
yourString.replace(/\r?\n?/g, '')
然后可以修剪字符串以删除前导空格和尾随空格:

yourString.trim()

我在添加我的答案,它只是上面的一个附加项, 至于我,我尝试了所有的/n选项,但都不起作用,我看到我的文本是从服务器提交的,带有双斜杠,所以我使用了以下方法:

var fixedText = yourString.replace(/(\r\n|\n|\r|\\n)/gm, '');

使用下面的功能,让您的生活更轻松

最简单的方法是使用正则表达式来检测和替换字符串中的换行符。在本例中,我们使用replace函数以及要替换的字符串,在本例中,该字符串是一个空字符串

function remove_linebreaks( var message ) {
    return message.replace( /[\r\n]+/gm, "" );
}

在上面的表达式中,g和m表示mac上的全局和多行标志,只需在regexp中使用
\n
即可匹配换行符。因此,代码将是
字符串。替换(/\n/g',)
,ps:g后面的意思是匹配全部,而不仅仅是第一个


在windows上,它将是
\r\n

这将用空格替换换行符

someText = someText.replace(/(\r\n|\n|\r)/gm,"");

阅读文章的更多内容。

如果碰巧您不需要此htm字符
使用
str.replace(/(\r\n |\n |\r)/gm,”)
您可以使用此
str.split('\n').join(“”)


干杯

简单我们可以使用
文本删除新行。替换(/\n/g,“”)

const text='明年的学生\n去旅行\n';
控制台日志(“原件:”,文本);
var removed\u new\u line=text.replace(/\n/g,“”);

日志(“新建:”,删除了新的行)
我认为这只会取代第一次出现的
/\n\r/g
更有效地编写
/[\n\r]/g
甚至
/[\n\r]+/g
。除非你绝对需要,否则避免更换。不确定这是否是投诉。它就像我说的:移除所有不在十六进制范围内的东西。什么字符当然取决于字符集,但这篇文章是关于ASCII的。为了完整起见,应该注意Unicode中有四个不同的新行字符:
\u000a
\n
,这是一个换行符<代码>\u000d
\r
,这是回车<代码>\u2028
,一个行分隔符;和段落分隔符
\u2029
。但实际上,您发布的正则表达式在大多数情况下都是足够的。@MathiasBynens,谢谢,但U+2028和U+2029在HTML(4.01)中并不显式构成换行符,DOM树和textarea的live值都是基于这些换行符:@PointedEars Yes,但是动态设置textarea的
.value
时不会发生HTML序列化,例如
textarea.value='a\u2029b';textarea.value.charAt(1)='\u2029';//正确
。但这可能是一种边缘情况——正如我所说,在大多数情况下,您的正则表达式就足够了。@MathiasBynens因为U+2028和U+2029在HTML(4.01)中不构成换行符,该赋值不会在文本区域中显示任何主要DOM I的两行
someText = someText.replace(/(\r\n|\n|\r)/gm,"");