删除字符串中的前导,尾随和多个空格

jks*_*hah 7 regex perl sed

我想删除所有前导和尾随空格.除了用字符串中的单个空格替换多个空格,以便字符串中的所有单词完全由单个空格分隔.

我可以使用正则表达式的两次迭代并寻找单个正则表达式解决方案来实现这一点.

s/^\s+|\s+$//g
s/\s+/ /g
Run Code Online (Sandbox Code Playgroud)

样本输入:

   word1   word2 word3     word4    
Run Code Online (Sandbox Code Playgroud)

期望的输出:

word1 word2 word3 word4
Run Code Online (Sandbox Code Playgroud)

如果你能帮助我解决这个问题,那将是件好事.

Jer*_*rry 11

您可以使用以下内容:

s/^\s+|\s+$|\s+(?=\s)//g
Run Code Online (Sandbox Code Playgroud)

\s+(?=\s) 将匹配字符串中间的所有空格并留下一个空格.


Cam*_*hue 7

在 Javascript 中,字符串原型有两种方法可以管理它:

\n
str = str.trim().replace(/\\s+/g, \' \')\n
Run Code Online (Sandbox Code Playgroud)\n

str.trim()\xe2\x80\x94 删除前导和尾随空格(并返回新字符串而不修改原始字符串)

\n

str.replace(regex, replacement)\xe2\x80\x94regex与提供的字符串进行比较,将匹配的实例替换为replacement,然后将结果作为新字符串返回。

\n

在我的示例中,正则表达式用斜杠 ( /regex/) 分隔,然后g附加,表明我们希望全局替换每个匹配的实例。如果没有那个“g”标志,它将只替换第一个匹配项。

\n

注意:如果您希望将的第一个参数.replace()解释为正则表达式,则不应将其用引号括起来。

\n

\\s+匹配一行中的多个空格

\n

例子:

\n

\r\n
\r\n
str = str.trim().replace(/\\s+/g, \' \')\n
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n

产量:\'1 2 3 4\'

\n

正则表达式:kleene 运算符将帮助您理解用于匹配多个空格的正则表达式

\n

了解更多:

\n

正则表达式:有关正则表达式和 /g 标志的有用指南

\n

Google:MDN 字符串修剪

\n

谷歌:MDN 字符串替换

\n