【问题标题】:Removing new lines except when new line preceded by double space删除新行,除非新行前面有双空格
【发布时间】:2015-04-24 20:21:27
【问题描述】:

我想从文本中删除新行,除非句子以双空格结尾(我正在使用 JavaScript)。

这个:

This
is
a
test.

应该转向这个:

This is a test.

但是这个:

This
is  //there is a double space here
a//but not here
test.

应该转向这个:

This is
a test.

到目前为止我的方法:我可以用一个新行替换多个空格,然后是一个新行:

var doubleSpaceNewline = new RegExp(/(\s){2,}\n/g);
test = text.replace(doubleSpaceNewline, '\n');

但是我如何删除换行符,而不删除我想要保留的行?

我宁愿删除所有新行,除了前面有两个或多个空格的换行符,然后用单个新行替换双空格 + 换行符。

我需要一个匹配\s+ 的正则表达式,(\s){2,}\n 除外。似乎无法将两者结合起来。

【问题讨论】:

标签: javascript regex


【解决方案1】:
text = text.replace("  \n", '****************');

text = text.replace("\n", ' ');

text = text.replace('****************', "  \n");

这就是你所追求的吗?不使用正则表达式,但过程更简单。

【讨论】:

  • 这行得通,但我仍然使用/(\s){2,}\n/ 以防使用两个以上的空格,但遵循了您的其余建议并且它有效!谢谢。
  • 酷!两全其美。
【解决方案2】:

要在正则表达式的帮助下找到“一个新行,如果前面没有,但有 2 个或更多(根据代码中的 {2,} 判断)空格”,您可以使用negative lookbehind。找到它的代码是

(?<!\s{2,})\n

然后照常替换。

【讨论】:

  • 我的理解是javascript不支持lookbehind。抱歉,只是标记了 JS,但没有提及。
  • 也不好意思,我不懂JS,只是写了个大概的答案
猜你喜欢
  • 2018-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
  • 1970-01-01
  • 2013-06-22
  • 2021-09-11
相关资源
最近更新 更多