Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何清理多个空格/换行符?_Javascript_Regex - Fatal编程技术网

Javascript 如何清理多个空格/换行符?

Javascript 如何清理多个空格/换行符?,javascript,regex,Javascript,Regex,我有一个变量摘要,如下所示: T he Fox Jumped Over 有3个部分需要清理摘要: 2+个连续空格应变为1个空格,见下文T 2+个连续换行符应变为2个换行符,请参见下面的垂直间距 应移除选项卡 目标是: T he Fox Jumped Over 注意:我尝试了摘要。替换(/\s\s+//g')但它输出了狐狸跳过了,后者负责第一部分,但完全破坏了第二部分的垂直间距,因为它认为这是连续间距。如果存在标签,也应移除/清理标签 我怎样才能

我有一个变量
摘要
,如下所示:

T    he  
Fox


Jumped



    Over
有3个部分需要清理
摘要

  • 2+个连续空格应变为1个空格,见下文
    T
  • 2+个连续换行符应变为2个换行符,请参见下面的垂直间距
  • 应移除选项卡
目标是:

T he  
Fox

Jumped    

Over
注意:我尝试了
摘要。替换(/\s\s+//g')但它输出了
狐狸跳过了
,后者负责第一部分,但完全破坏了第二部分的垂直间距,因为它认为这是连续间距。如果存在标签,也应移除/清理标签

我怎样才能进球

更新:我想我把第二部分搞砸了,因为断线太多,所以我更新了它。但目标是我们在间距/格式方面所追求的

summary.replace(/ +/g, ' ').replace(/\n\n+/g, "\n\n").replace(/\t+/g, '');
或者,如果所有字符都是空白字符

summary.replace(/(\s)\1+/g, '$1');
这是更有效的,因为它在字符串上只传递一次

或者,如果所有字符都是空白字符

summary.replace(/(\s)\1+/g, '$1');

这是更有效的,因为它在字符串上只传递一次。

两个以上的连续空格或换行符

查找
((?:[]|\r?\n))\1+

更换发动机使用的
$1
\1

编辑:删除所有选项卡。
(注意-当选项卡匹配时,捕获组1将为空。
结果:选项卡被删除,而不是被替换。请使用相同的替换。)

查找
(?:\t+|)((?:[]\r?\n))\1+

替换
$1
\1

edit2:2+换行符变为2换行符。
(更多附加组件,OP不断更改)

查找
(?:\t+|)(?:[](?=[])|)(?:\r?\n{2}))\1*)

替换
$1
\1



只需要1次通过,是最快的方式

两个以上连续空格或换行符

查找
((?:[]|\r?\n))\1+

更换发动机使用的
$1
\1

编辑:删除所有选项卡。
(注意-当选项卡匹配时,捕获组1将为空。
结果:选项卡被删除,而不是被替换。请使用相同的替换。)

查找
(?:\t+|)((?:[]\r?\n))\1+

替换
$1
\1

edit2:2+换行符变为2换行符。
(更多附加组件,OP不断更改)

查找
(?:\t+|)(?:[](?=[])|)(?:\r?\n{2}))\1*)

替换
$1
\1




只需要1次传球,这是最快的方式

@JefréN。OP没有提到任何标签。对不起,我添加了一个更新,但目标不是它看起来的样子。制表符仍然存在,换行符的垂直间距也不一样(我的错,所以我添加了更新,但只要目标是输出,就应该可以了)@Wonka,ok-更新以删除制表符并用2
\n
替换2+
\n
。只是想知道,是否可以将它们组合成一个替换,还是这是最有效的方法?@Wonka如果你尝试,你会得到一个无法阅读的混乱。这可能是可能的,但我怀疑它是否会更有效率。@JefréN.OP没有说任何关于选项卡的内容。对不起,我添加了一个更新,但目标不是它看起来的那样。制表符仍然存在,换行符的垂直间距也不一样(我的错,所以我添加了更新,但只要目标是输出,就应该可以了)@Wonka,ok-更新以删除制表符并用2
\n
替换2+
\n
。只是想知道,是否可以将它们组合成一个替换,还是这是最有效的方法?@Wonka如果你尝试,你会得到一个无法阅读的混乱。这可能是可能的,但我怀疑它是否会更有效。这是什么意思?
\1
的意思是“匹配第一个括号中匹配的任何文本”确定。这回答了我的下一个问题。。。我以前从未见过这种情况!您不应该用空格字符替换换行符/制表符。@Wonka现在您已经更改了要求,不能一次完成。您使用ndn的解决方案进行多次传递。这是什么意思?
\1
的意思是“匹配第一个括号匹配的任何文本”确定。这回答了我的下一个问题。。。我以前从未见过这种情况!您不应该用空格字符替换换行符/制表符。@Wonka现在您已经更改了要求,不能一次完成。您使用ndn的解决方案进行多次传递。Fwiw:this
Over
变成
Over
Fwiw:this
Over
变成
Over