通过javascript / jquery删除/截断前导零

build议通过javascript,jquery从数字(任意string)中删除或截断前导零的解决scheme。

你可以使用一个正则expression式在string的开始处匹配零:

 s = s.replace(/^0+/, ''); 

我会使用Number()函数:

 var yourString = "00001"; yourString = Number(yourString).toString(); 

也许有点晚,但我想补充我的2美分。

如果你的string总是代表一个数字,可能前导零,你可以通过使用'+'运算符简单地将string转换为数字。

例如

 x= "00005"; alert(typeof x); //"string" alert(x);// "00005" x = +x ; //or x= +"00005"; //do NOT confuse with x+=x, which will only concatenate the value alert(typeof x); //number , voila! alert(x); // 5 (as number) 

如果你的string不代表一个数字,你只需要删除0的其他解决scheme,但如果你只需要他们作为数字,这是最短的方式。

和FYI你可以做相反的,如果你连接一个空string给他们强制数字作为string,如:

 x = 5; alert(typeof x); //number x = x+""; alert(typeof x); //string 

希望它有助于某人

既然你说“任何string”,我假设这也是你想要处理的string。

 "00012 34 0000432 0035" 

所以,正则expression式是要走的路:

 var trimmed = s.replace(/\b0+/g, ""); 

这将防止“000000”值的丢失。

 var trimmed = s.replace(/\b(0(?!\b))+/g, "") 

你可以在这里看到一个工作的例子

我得到了这个解决scheme截断前导零(数字或任何string)在JavaScript中:

 <script language="JavaScript" type="text/javascript"> <!-- function trimNumber(s) { while (s.substr(0,1) == '0' && s.length>1) { s = s.substr(1,9999); } return s; } var s1 = '00123'; var s2 = '000assa'; var s3 = 'assa34300'; var s4 = 'ssa'; var s5 = '121212000'; alert(s1 + '=' + trimNumber(s1)); alert(s2 + '=' + trimNumber(s2)); alert(s3 + '=' + trimNumber(s3)); alert(s4 + '=' + trimNumber(s4)); alert(s5 + '=' + trimNumber(s5)); // end hiding contents --> </script> 

尝试这个,

  function ltrim(str, chars) { chars = chars || "\\s"; return str.replace(new RegExp("^[" + chars + "]+", "g"), ""); } var str =ltrim("01545878","0"); 

更多在这里

您应该使用“parseInt”函数的“radix”参数: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt? redirectlocale = en-US & redirectslug = JavaScript%2FReference %2FGlobal_Objects%2FparseInt

parseInt('015',10)=> 15

如果你不使用它,一些JavaScript引擎可能会使用它作为八进制parseInt('015')=> 0

 parseInt(value) or parseFloat(value) 

这将很好地工作。

如果数字是int使用

 "" + parseInt(str) 

如果号码是浮动使用

 "" + parseFloat(str) 

另一种方式没有正则expression式:

 function trimLeadingZerosSubstr(str) { var xLastChr = str.length - 1, xChrIdx = 0; while (str[xChrIdx] === "0" && xChrIdx < xLastChr) { xChrIdx++; } return xChrIdx > 0 ? str.substr(xChrIdx) : str; } 

短string将比正则expression式( jsperf )更快,