javascript, jquery에 의해 숫자 (임의의 문자열)에서 맨 앞의 0을 제거하거나 자르는 방법을 제안합니다.javascript/jquery로 맨 앞의 0을 제거/자릅니다.
답변
당신은 문자열의 시작 부분에 제로 일치하는 정규 표현식을 사용할 수 있습니다
s = s.replace(/^0+/, '');
@SomnathMuluk : 많은 자바 스크립트 프로그래머에게 놀랄 것입니다! – Bert
@Guffa : jquery 코드에서 사용하고 있습니다. 작동하지 않을 수도 있습니다. –
@Somnath, jQuery는 javascript입니다. 뭔가 자바 스크립트에서 작동하는 경우 jQuery뿐만 아니라 사용하는 일이 계속 작동합니다. –
는 말했다 때문에 "임의의 문자열" , 나는 이것이 당신이 처리하기를 원하는 문자열이라고 가정하고있다.
"00012 34 0000432 0035"
그래서, 정규식 길을 가야하는 것입니다 :
var trimmed = s.replace(/\b0+/g, "");
그리고 이것은 "000000"가치의 손실을 방지 할 수 있습니다.
var trimmed = s.replace(/\b(0(?!\b))+/g, "")
확인할 수 있습니다 내가 자바 스크립트에서이 앞에 0을 절단하기위한 솔루션 (숫자 나 문자열)있어 working example here
+1, 탁월한 대답 –
:
이<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>
그다지 좋은 코드는 아닙니다. 문자열의 길이를 검사하는 것은 완전히 엄청나 다. 결코 false로 평가되지 않을 것이다. 'substr'에 대한 두 번째 매개 변수로'9999'를 사용하는 것은 필요하지 않습니다. 'while (s.substr (0,1) =='0 ') s = s.substr (1);'을 사용하십시오. 게다가, 그 코드 스 니펫은 정말로 오래되어 보이고,'script' 태그의'language' 속성은 오랫동안 사용되지 않았으며'script' 태그 안에 주석을 사용하는 것은'script'를 이해하지 못하는 브라우저에서만 필요합니다 태그, 예. Internet Explorer 1.0. – Guffa
그것은 나를 위해 잘 작동하고있다. ... – Avinash
당신은의 "기수"매개 변수를 사용해야합니다을 "parseInt"함수 : 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
,당신이 그것을 사용하지 않는 경우, 일부 자바 스크립트 엔진이 진수 에서는 parseInt ('015')로 사용할 수 있습니다 = 0
어쩌면 조금 늦게,하지만 난 내 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
이 희망 누군가
내가 번호를 사용하는 것이에게 (도움) 기능 :
var yourString = "00001";
yourString = Number(yourString).toString();
2^53보다 큰 값에서는 작동하지 않습니다. 숫자 ("009007199254740993"). toString()은 "9007199254740992" – madreason
완벽한 답변입니다! 좀 더 설명을 추가하려고 :) – SagarPPanchal
parseInt(value) or parseFloat(value)
이 잘 작동합니다.
수는 정규식없이 플로트를 사용
"" + parseFloat(str)
한 또 다른 방법입니다 경우 수는 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)
문자열이 "000000000"일 때 일어날 일 – robert
숫자가 항상 정수가 될 것으로 예상 되는가 아니면 소수점 이하의 숫자를 처리해야합니까? ''00000.5 '')? – CMS
주어진 문자열에 대해 작업해야합니다. 즉 "00000evsdd"는 "evsdd"를, "00000.5"는 ".5"를 부여해야합니다. –