2011-11-26 3 views
46

javascript, jquery에 의해 숫자 (임의의 문자열)에서 맨 앞의 0을 제거하거나 자르는 방법을 제안합니다.javascript/jquery로 맨 앞의 0을 제거/자릅니다.

+3

문자열이 "000000000"일 때 일어날 일 – robert

+0

숫자가 항상 정수가 될 것으로 예상 되는가 아니면 소수점 이하의 숫자를 처리해야합니까? ''00000.5 '')? – CMS

+0

주어진 문자열에 대해 작업해야합니다. 즉 "00000evsdd"는 "evsdd"를, "00000.5"는 ".5"를 부여해야합니다. –

답변

121

당신은 문자열의 시작 부분에 제로 일치하는 정규 표현식을 사용할 수 있습니다

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

@SomnathMuluk : 많은 자바 스크립트 프로그래머에게 놀랄 것입니다! – Bert

+0

@Guffa : jquery 코드에서 사용하고 있습니다. 작동하지 않을 수도 있습니다. –

+1

@Somnath, jQuery는 javascript입니다. 뭔가 자바 스크립트에서 작동하는 경우 jQuery뿐만 아니라 사용하는 일이 계속 작동합니다. –

2

이 시도를

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

    var str =ltrim("01545878","0"); 

here

+0

문자열 값에 문제가 있습니다. –

+0

@SomnathMuluk : 어떤 문제가 있습니다. 여기 작업 예제입니다. http://jsfiddle.net/AxeUU/ – Gowri

8

는 말했다 때문에 "임의의 문자열" , 나는 이것이 당신이 처리하기를 원하는 문자열이라고 가정하고있다.

"00012 34 0000432 0035" 

그래서, 정규식 길을 가야하는 것입니다 :

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

그리고 이것은 "000000"가치의 손실을 방지 할 수 있습니다.

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

확인할 수 있습니다 내가 자바 스크립트에서이 앞에 0을 절단하기위한 솔루션 (숫자 나 문자열)있어 working example here

+2

+1, 탁월한 대답 –

3

:

<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> 
+3

그다지 좋은 코드는 아닙니다. 문자열의 길이를 검사하는 것은 완전히 엄청나 다. 결코 false로 평가되지 않을 것이다. 'substr'에 대한 두 번째 매개 변수로'9999'를 사용하는 것은 필요하지 않습니다. 'while (s.substr (0,1) =='0 ') s = s.substr (1);'을 사용하십시오. 게다가, 그 코드 스 니펫은 정말로 오래되어 보이고,'script' 태그의'language' 속성은 오랫동안 사용되지 않았으며'script' 태그 안에 주석을 사용하는 것은'script'를 이해하지 못하는 브라우저에서만 필요합니다 태그, 예. Internet Explorer 1.0. – Guffa

+0

그것은 나를 위해 잘 작동하고있다. ... – Avinash

9

어쩌면 조금 늦게,하지만 난 내 2 센트를 추가 할>.

문자열이 항상 앞에 오는 0을 나타내는 숫자 인 경우 '+'연산자를 사용하여 문자열을 숫자로 쉽게 캐스팅 할 수 있습니다.

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) 

당신의 문자열은 숫자를 표시하지 않으며, 당신은 단지 다른 솔루션과 0의 사용을 제거해야하지만, 당신은 단지 숫자로 필요한 경우,이 짧은 방법입니다 경우.

및 참고 당신이처럼, 그들에게 빈 문자열을 연결할 경우 문자열로 행동 반대, 힘의 번호를 수행 할 수 있습니다

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

이 희망 누군가

+1

이것이 downvoted되었던 이유를 말하는 마음? – DiegoDD

+0

2^53보다 큰 값에서는 작동하지 않습니다. (+ "009007199254740993"). toString()은 "9007199254740992" – madreason

15

내가 번호를 사용하는 것이에게 (도움) 기능 :

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

2^53보다 큰 값에서는 작동하지 않습니다. 숫자 ("009007199254740993"). toString()은 "9007199254740992" – madreason

+1

완벽한 답변입니다! 좀 더 설명을 추가하려고 :) – SagarPPanchal

1
parseInt(value) or parseFloat(value) 

이 잘 작동합니다.

0

수는 정규식없이 플로트를 사용

"" + parseFloat(str) 
0

한 또 다른 방법입니다 경우 수는 INT 사용

"" + parseInt(str) 

경우 : 더 빠른

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

짧은 문자열이 될 것입니다 정규식보다 (jsperf)