【问题标题】:Remove whitespaces inside a string in javascript在javascript中删除字符串中的空格
【发布时间】:2012-06-03 17:56:58
【问题描述】:

我已经阅读了 this question 关于 javascript trim 的内容,并提供了正则表达式的答案。

然后我希望 trim 删除 Hello 和 World 之间的 inner 空间。

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

已编辑

我为什么会这样!?

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

【问题讨论】:

  • trim 删除字符串开头和结尾的空格
  • Trim 删除 beforeafter 字符串中的空格。 Hello World 已经“修剪”了。
  • @void:这不是“修剪”,这是一个不同的问题。

标签: javascript html trim


【解决方案1】:

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

更新

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

【讨论】:

【解决方案2】:

用于删除空格字符

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

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

【讨论】:

  • @RocketHazmat 是的!正确答案!虽然这可能更有效: str.replace(/\s+/g, '')
  • @RocketHazmat:你说的其他空白是什么意思? '.replace(/ /g, '')' 这将删除所有空格对吗?
  • @PitchiahNatarajan \s 将匹配空格、制表符和换行符。
【解决方案3】:

您可以将字符串replace 方法与正则表达式一起使用。

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

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

RegExp

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

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

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

【讨论】:

    【解决方案4】:

    你可以使用

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

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

    如果把替换空字符串改成'$',区别就更明显了:

    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

    【讨论】:

    • currently accepted answer 做同样的事情。请提供一些相关测试,表明这比答案快了超过纳秒。
    • @HereticMonkey 更新了!
    • 感谢您提供的示例,清楚地说明了不同之处。
    【解决方案5】:

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

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

    【讨论】:

      【解决方案6】:

      如果您只想替换空格,最好的方法是这样做:

      let str = " H e l l o 1  5 9   ";
      let onlyCharacters = str.replaceAll(" ", "");
      
      // onlyCharacters = Hello159

      我经常使用str.replace(/\s/g, "");,但它并不适用于所有浏览器,例如它在 android 的 dadduckgo 中不起作用,在 android webview 中也不起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多