在javascript中删除字符串内的空格

IT技术 javascript html trim
2021-02-15 06:23:56

我已经阅读了有关 javascript 修剪的这个问题,并带有正则表达式答案。

然后我希望修剪去除Hello 和 World 之间内部空间。

function myFunction() {
    alert("Hello World ".trim());
}

已编辑

为什么我这么期待!?

废话!显然修剪不会删除内部空间!,只有前导和尾随,这就是修剪的工作原理,那么这是一个非常错误的问题,我很抱歉。

6个回答

对于空格字符删除使用

"hello world".replace(/\s/g, "");

对于所有空白,请在下面的评论中使用 Rocket 的建议!

@RocketHazmat 是的!正确答案!虽然这可能更有效: str.replace(/\s+/g, '')
2021-04-30 06:23:56
@RocketHazmat:其他空白是什么意思?'.replace(//g, '')' 这将删除所有空格,对吗?
2021-05-08 06:23:56
@PitchiahNatarajan\s将匹配空格、制表符和换行符。
2021-05-15 06:23:56

您可以使用

"Hello World ".replace(/\s+/g, '');

trim()只删除字符串上的尾随空格(链上的第一个和最后一个)。在这种情况下,这个 regExp 更快,因为您可以同时删除一个或多个空格。

如果将替换空字符串更改为 '$',则差异变得更加清晰:

var string= '  Q  W E   R TY ';
console.log(string.replace(/\s/g, '$'));  // $$Q$$W$E$$$R$TY$
console.log(string.replace(/\s+/g, '#')); // #Q#W#E#R#TY#

性能比较 -/\s+/g更快。见这里:http : //jsperf.com/s-vs-s

谢谢你的例子,清楚地说明了区别在做什么。
2021-04-27 06:23:56
@HereticMonkey 更新了!
2021-05-07 06:23:56
目前接受的答案做同样的事情。请提供一些相关测试,表明这比该答案快超过纳秒。
2021-05-11 06:23:56

可能是因为您忘记在已接受的答案中实施解决方案这就是trim()工作的代码

更新

此答案仅适用于较旧的浏览器。较新的浏览器显然支持trim()本机。

不一定,有些浏览器内置了它。:-P
2021-04-27 06:23:56
它现在存在于大多数现代浏览器中 -> kangax.github.com/es5-compat-table
2021-05-09 06:23:56

您可以使用带有正则表达式的字符串替换方法。

"Hello World ".replace(/ /g, "");

replace() 方法返回一个新字符串,其中部分或全部模式匹配项被替换项替换。模式可以是字符串或正则表达式

正则表达式

  • // - 正则表达式匹配空格

  • g - 全局标志;查找所有匹配项而不是在第一个匹配项后停止

您可以使用递归解决方案:

function removeWhitespaces(string, i = 0, res = "") {
  if (i >= string.length)
    return res
  else
  if (string[i] == " ")
    return removeWhitespaces(string, i + 1, res)
  else
    return removeWhitespaces(string, i + 1, res += string[i])
}

console.log(removeWhitespaces(" Hello World,   how is it going ? "))