我在 textarea 中有一个文本,我使用 .value 属性将其读出。
现在我想Enter使用 .replace 和正则表达式从我的文本中删除所有换行符(当你按下时产生的字符),但是我如何在正则表达式中指示换行符?
如果这是不可能的,还有其他方法吗?
我在 textarea 中有一个文本,我使用 .value 属性将其读出。
现在我想Enter使用 .replace 和正则表达式从我的文本中删除所有换行符(当你按下时产生的字符),但是我如何在正则表达式中指示换行符?
如果这是不可能的,还有其他方法吗?
您如何找到换行符因操作系统编码而异。Windows 会是\r\n
,但 Linux 只是使用\n
而 Apple 使用\r
。
我在JavaScript 换行符中发现了这一点:
someText = someText.replace(/(\r\n|\n|\r)/gm, "");
这应该删除各种换行符。
换行符(更好:换行符)可以是回车(CR、\r
、 在较旧的 Mac 上)、换行(LF、\n
,在 Unices 包括 Linux 上)或 CR 后跟 LF(\r\n
在 WinDOS 上)之一。(与另一个答案相反,这与字符编码无关。)
因此,RegExp
匹配所有变体的最有效文字是
/\r?\n|\r/
如果要匹配字符串中的所有换行符,请使用全局匹配,
/\r?\n|\r/g
分别。然后replace
按照其他几个答案中的建议继续使用该方法。(也许你并不想删除换行符,但与其他空格替换它们,例如空格字符,这样的话保持不变。)
var str = " \n this is a string \n \n \n"
console.log(str);
console.log(str.trim());
String.trim()
从字符串的开头和结尾删除空格......包括换行符。
const myString = " \n \n\n Hey! \n I'm a string!!! \n\n";
const trimmedString = myString.trim();
console.log(trimmedString);
// outputs: "Hey! \n I'm a string!!!"
这是一个示例小提琴:http : //jsfiddle.net/BLs8u/
笔记!它只修剪字符串的开头和结尾,而不是字符串中间的换行符或空格。
您可以\n
在正则表达式中使用换行符和\r
回车符。
var str2 = str.replace(/\n|\r/g, "");
不同的操作系统使用不同的行结尾,具有变化的混合物\n
和\r
。这个正则表达式将全部替换它们。
最简单的解决方案是:
let str = '\t\n\r this \n \t \r is \r a \n test \t \r \n';
str = str.replace(/\s+/g, ' ').trim();
console.log(str); // logs: "this is a test"
.replace()
使用正则/\s+/g
表达式将所有空格字符组更改为整个字符串中的单个空格,然后我们.trim()
将删除文本前后所有超出的空格。
被视为空格字符:
[ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]