145

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

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

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

已编辑

为什么我会这么期待!?

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

4

6 回答 6

310

对于空格字符删除使用

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

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

于 2012-05-29T13:43:23.280 回答
20

您可以使用

"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

于 2020-04-10T12:25:33.977 回答
8

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

更新

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

于 2012-05-29T13:42:09.593 回答
2

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

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

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

正则表达式

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

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

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

于 2019-08-19T21:41:00.010 回答
1

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

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

// onlyCharacters = Hello159

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

于 2021-10-29T07:11:02.450 回答
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 ? "))

于 2021-07-21T11:21:27.577 回答