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

时间:2012-05-29 13:40:23

标签: javascript html trim

我已阅读this question关于javascript修剪的问题,并附有正则表达式的答案。

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

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

EDITED

我为什么要这么做!?

无意义!显然修剪不会移除内部空间!只有前导和尾随,这就是修剪工作的方式,那么这是一个非常错误的问题,我的道歉。

5 个答案:

答案 0 :(得分:166)

使用

删除空格字符
"hello world".replace(/\s/g, "");
所有空格的

在下面的评论中使用Rocket的建议!

答案 1 :(得分:6)

可能是因为你忘了implement the solution in the accepted answer。这就是使trim()工作的代码。

<强>更新

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

答案 2 :(得分:3)

您可以使用

"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

答案 3 :(得分:2)

您可以将Strings replace方法与正则表达式结合使用。

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

  

replace()方法返回一个新的字符串,其中包含部分或全部匹配项   用替换替换的模式。模式可以是字符串或   RegExp

RegExp

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

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

const str = "H    e            l l       o  World! ".replace(/ /g, "");
document.getElementById("greeting").innerText = str;
<p id="greeting"><p>

答案 4 :(得分:0)

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

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 ? "))