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