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

2020/09/26 20:01 · javascript ·  · 0评论

我在textarea中有一个文本,并使用.value属性将其读出。

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

如果那不可能,还有另一种方法吗?

这可能是一个常见问题解答。无论如何,换行符(更好的是:换行符)可以是回车符(\r在较早的Mac上为CR,),\n换行符(\r\n在Unices 包括Linux上为LF,)或CR后跟LF(在WinDOS上)。(与另一个答案相反,这与字符编码无关。)

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

/\r?\n|\r/

如果要匹配字符串中的所有换行符,请使用全局匹配,

/\r?\n|\r/g

分别。然后replace按照其他几个答案中的建议进行操作。(也许你并不想删除换行符,但与其他空格替换它们,例如空格字符,这样的话保持不变。)

换行符的查找方式因操作系统编码而异。Windows是\r\n,但Linux仅使用\n而Apple使用\r

我在JavaScript换行符中发现了这一点

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

那应该删除所有换行符。

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.replace(/\s+/g, ' ').trim();
console.log(str); // logs: "this is a test"

.replace()使用/\s+/gregexp可以将整个字符串中的所有空白字符更改为单个字符串,然后我们.trim()将结果删除文本前后所有超出的空白。

被视为空格字符:
[ \f\n\r\t\v​\u00a0\u1680​\u2000​-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]

如果要删除所有控制字符,包括CR和LF,可以使用以下命令:

myString.replace(/[^\x20-\x7E]/gmi, "")

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

var str = "bar\r\nbaz\nfoo";

str.replace(/[\r\n]/g, '');

>> "barbazfoo"

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

yourString.replace(/\r?\n?/g, '')

然后,您可以修剪字符串以删除前导和尾随空格:

yourString.trim()

PointedEars提供的答案就是我们大多数人需要的一切。但是,按照Mathias Bynens的回答,我进行了Wikipedia之旅,发现了这一点:https ://en.wikipedia.org/wiki/Newline

以下是一个插入函数,用于实现上述Wiki页面在回答此问题时认为“换行”的所有内容。

如果有什么不适合您的情况,请将其删除。另外,如果您不是在寻找性能,那对于在任何情况下都能胜任的快速工具来说,这应该很有用。

// replaces all "new line" characters contained in `someString` with the given `replacementString`
const replaceNewLineChars = ((someString, replacementString = ``) => { // defaults to just removing
  const LF = `\u{000a}`; // Line Feed (\n)
  const VT = `\u{000b}`; // Vertical Tab
  const FF = `\u{000c}`; // Form Feed
  const CR = `\u{000d}`; // Carriage Return (\r)
  const CRLF = `${CR}${LF}`; // (\r\n)
  const NEL = `\u{0085}`; // Next Line
  const LS = `\u{2028}`; // Line Separator
  const PS = `\u{2029}`; // Paragraph Separator
  const lineTerminators = [LF, VT, FF, CR, CRLF, NEL, LS, PS]; // all Unicode `lineTerminators`
  let finalString = someString.normalize(`NFD`); // better safe than sorry? Or is it?
  for (let lineTerminator of lineTerminators) {
    if (finalString.includes(lineTerminator)) { // check if the string contains the current `lineTerminator`
      let regex = new RegExp(lineTerminator.normalize(`NFD`), `gu`); // create the `regex` for the current `lineTerminator`
      finalString = finalString.replace(regex, replacementString); // perform the replacement
    };
  };
  return finalString.normalize(`NFC`); // return the `finalString` (without any Unicode `lineTerminators`)
});

请在下方使用此功能,轻松生活

最简单的方法是使用正则表达式来检测和替换字符串中的换行符。在这种情况下,我们将replace函数与字符串一起替换为,在我们的情况下为空字符串。

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

在上面的表达式中,g和m代表全局和多行标志

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

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

我正在添加我的答案,它只是上述内容的一个附加项,对于我来说,我尝试了所有/ n选项,但它不起作用,我看到我的文本来自服务器,带有双斜杠,因此我使用了此命令:

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

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

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'

这将用空格替换换行符。

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

阅读更多关于这篇文章。

在Mac上,只需\n在regexp中使用以匹配换行符。因此,代码将是string.replace(/\n/g, '')ps:后面的g表示匹配所有而不是仅匹配第一个。

在Windows上,它将为\r\n

如果碰巧您不需要使用此htm字符,&nbspstr.replace(/(\r\n|\n|\r)/gm, "")可以使用此功能str.split('\n').join('');

干杯

本文地址:http://javascript.askforanswer.com/ruhecongzifuchuanzhongshanchusuoyouhuanxingfu.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!