如何在JavaScript中从字符串中移除“,”

75

原始字符串是 "a,d,k"

我想删除所有的 , 并将其变为 "adk"

我尝试了下面的代码,但它不起作用。

"a,d,k".replace(/,/,"")

1
"不起作用"? 请详细说明。关于它哪个地方 "不起作用"? - Rob
2
我搜索了相同的问题。谢谢你节省了我的时间。 - Krishna
6个回答

125
你没有将replace方法的结果赋值回你的变量。当你调用replace方法时,它返回一个新的字符串,而不是修改旧的字符串。
例如,将此代码加载到您喜欢的浏览器中:
<html><head></head><body>
    <script type="text/javascript">
        var str1 = "a,d,k";
        str1.replace(/\,/g,"");
        var str2 = str1.replace(/\,/g,"");
        alert (str1);
        alert (str2);
    </script>
</body></html>
在这种情况下,str1仍将是"a,d,k",而str2将变为"adk"
如果您想更改str1,应该进行以下操作:
var str1 = "a,d,k";
str1 = str1.replace (/,/g, "");

3
+1,但您可以只使用 var str2; str2 = str.replace(...)。我已经对答案进行了拓展,以便(希望)改进它。 - paxdiablo
40
如果你想在不使用正则表达式的情况下完成它,可以使用str.split(",").join("") - Lime

42

可以使用String.replace()方法,例如:

var str = "a,d,k";
str = str.replace( /,/g, "" );

注意正则表达式上的g(全局)标志,它匹配所有的","实例。


7
如果您想要删除多个字符,比如逗号和句号,可以这样写:
<script type="text/javascript">
  var mystring = "It,is,a,test.string,of.mine" 
  mystring = mystring.replace(/[,.]/g , ''); 
  alert( mystring);
</script>

5
您可以尝试类似以下的操作:

var str = "a,d,k";
str.replace(/,/g, "");

-2

<script type="text/javascript">var s = '/Controller/Action#11112';if(typeof s == 'string' && /\?*/.test(s)){s = s.replace(/\#.*/gi,'');}document.write(s);</script>

这是一个更常见的答案,可以使用s= document.location.href;


-3
如果您需要一个大于999,999.00的数字,那么您可能会遇到问题。 这些只适用于小于100万的数字,即1,000,000以下。 它们只能删除1或2个逗号。
以下是可以删除最多12个逗号的脚本:
function uncomma(x) {
  var string1 = x;
  for (y = 0; y < 12; y++) {
    string1 = string1.replace(/\,/g, '');
  }
  return string1;
}

如果你需要更大的数字,请修改那个for循环。


2
你正则表达式中的 g 表示全局匹配,将在第一次匹配时从字符串中删除所有逗号,其他 11 次循环不起作用。此外,在字面上不需要转义逗号字符。我建议不要对他人的答案表现得如此敌对和批判性。 - JaredMcAteer
很奇怪,用11个循环可以运行,但只用1个通道就不行。 - Alex
我并没有表现出“敌对”或“批评”的态度。只是想告诉你上面的例子有缺陷,对于大于一百万的数字无法正常工作。我需要这段代码,测试了它,但它失败了。我已经发布了我的解决方案,只需要11个循环就可以运行,但不能只用一个循环。你能告诉我为什么吗?这与你所说的相反,让我感到不确定。 - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接