【问题标题】:Javascript - Remove all char '0' that come before another charJavascript - 删除另一个字符之前的所有字符“0”
【发布时间】:2015-12-03 19:01:16
【问题描述】:

我有很多这样的字符串:

0001, 0002, ..., 0010, 0011, ..., 0100, 0101,...

我希望这些变成这样:

1, 2, ..., 10, 11, ..., 100, 101, ...

所以我想在出现其他字符之前删除所有 0 字符。 我试过了

.replace(/0/g, '') 

当然,它也会删除0 之后的字符。因此,例如 0010 变为 1 而不是 10。你能帮帮我吗?

【问题讨论】:

  • 是数组吗?还是字符串?
  • 对于现在删除的单个字符串,答案会更好:parseInt('000101').toString()
  • 您能确认您的号码中不会有点、空格等吗?您的字符串是否包含一个或多个逗号分隔的数字?

标签: javascript


【解决方案1】:

这是短裤解决方案

"0001".replace(/^0+/,""); // => 1 
...
// Tested on Win7 Chrome 44+

^ ... 字符串的开头 0+ ...至少一个0

P.s.:在喜欢的页面上测试 Regex:https://regex101.com/https://www.debuggex.com

更新 1:

对于一个长字符串

 "0001, 0002, 0010, 0011, 0100, 0101".replace(/(^|\s)0+/g,"") // => 1, 2, 10, 11, 100, 101
 // Tested on Win7 Chrome 44+

示例:

//  short Strings
var values = ['0001', '0002','0010', '0011','0100','0101'];
for(var idx in values){
  document.write(values[idx] + " -> "+values[idx].replace(/^0+/,"") + "<br/>");
}

// one long String 
document.write("0001, 0002, 0010, 0011, 0100, 0101".replace(/(^|\s)0+/g,""));

【讨论】:

    【解决方案2】:

    var 文本='00101'; var 结果=parseInt(文本);

    【讨论】:

      【解决方案3】:

      你可以的

      .replace(/\d+/g, function(v){ return +v })
      

      【讨论】:

      • '010004'.replace(/0+([1-9]+)/g,'$1')?
      • @ArunPJohny 你是对的。我用一个懒惰但可靠的解决方案编辑
      【解决方案4】:

      将正则表达式用作/(^|,\s*)0+/g,它将在开头选择0或后跟,和空格

      document.write('0001, 0002, ..., 0010, 0011, ..., 0100, 0101,...'.replace(/(^|,\s*)0+/g,'$1'))

      解释:

      (^|,\s*)0+
      

      Debuggex Demo

      【讨论】:

        【解决方案5】:

        以前回答过here

        .replace(/^0+(?!$)/, '')
        

        功能上与winner_joiner 的答案相同,但如果输入完全由零组成,此特定正则表达式不会返回完全空的字符串。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-07-19
          • 2018-07-08
          • 1970-01-01
          • 2018-03-23
          • 2019-06-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多