은 혼자 남겨 두어야합니다.자바 스크립트 문자열의 처음에 0을 추가하십시오 (최대 길이 4 자)
var number = 120;
은 "0120"으로 변경해야합니다.
var number = 10;
은 "0010"으로 변경해야합니다.
var number = 7;
은 "0007"로 변경해야합니다.
은 혼자 남겨 두어야합니다.자바 스크립트 문자열의 처음에 0을 추가하십시오 (최대 길이 4 자)
var number = 120;
은 "0120"으로 변경해야합니다.
var number = 10;
은 "0010"으로 변경해야합니다.
var number = 7;
은 "0007"로 변경해야합니다.
function pad_with_zeroes(number, length) {
var my_string = '' + number;
while (my_string.length < length) {
my_string = '0' + my_string;
}
return my_string;
}
function pad(n, len) {
return (new Array(len + 1).join('0') + n).slice(-len);
}
오래된 IE 버전에서 작동하지 않을 수 있습니다.
+1은 IE 4.0 이후부터 정상적으로 작동합니다. 더 간단한 접근법은 동적 일 필요가 없다면'("0000"+ n) .slice (-4);' –
@Andy 네가 그것을 코딩했다면 아마 나는 단지 문자열을 초기화 할 것이다. 20 또는 30 개의 0을 지정하고 사용하십시오. – Pointy
내가 좋아하는 접근 방식은 숫자에 10^N을 더하는 것입니다. 여기서 N은 원하는 0의 개수입니다. 결과 숫자를 문자열로 처리하고 0 번째 자릿수를 잘라냅니다. 물론, 당신은 당신의 입력 번호가 패드의 길이보다 클 수 있습니다 경우 조심해야 할 것입니다,하지만 여전히 루프 방법보다 훨씬 빠르다 :
이// You want to pad four places:
>>> var N = Math.pow(10, 4)
>>> var number = 1310
>>> number < N ? ("" + (N + number)).slice(1) : "" + number
"1310"
>>> var number = 120
>>> number < N ? ("" + (N + number)).slice(1) : "" + number
"0120"
>>> var number = 10
>>> number < N ? ("" + (N + number)).slice(1) : "" + number
"0010"
…
등 쉽게 충분한 기능에이를 수 :
/**
* Pad a number with leading zeros to "pad" places:
*
* @param number: The number to pad
* @param pad: The maximum number of leading zeros
*/
function padNumber(number, pad) {
var N = Math.pow(10, pad);
return number < N ? ("" + (N + number)).slice(1) : "" + number
}
//to: 0 - to left, 1 - to right
String.prototype.pad = function(_char, len, to) {
if (!this || !_char || this.length >= len) {
return this;
}
to = to || 0;
var ret = this;
var max = (len - this.length)/_char.length + 1;
while (--max) {
ret = (to) ? ret + _char : _char + ret;
}
return ret;
};
사용법 :
someString.pad(neededChars, neededLength)
예 :
'332'.pad('0', 6); //'000332'
'332'.pad('0', 6, 1); //'332000'
다른 방법이 있습니다. 내가 한 일에서 오는 것은 페이지로드시 수천 번 수행해야합니다. 한 번 열을 0으로 하드 코딩하는 것은 꽤 CPU 효율이 좋으며 필요한만큼 여러 번 패드에 필요한만큼 잘라 낼 수 있습니다. 나는 정말 10 가지 방법의 힘을 좋아합니다 - 꽤 유연합니다. 사례 중 하나를 선택하여 원래의 질문에 대한
, ... 다음
var number = 1310;
var number = 120;
var number = 10;
var number = 7;
// only needs to happen once
var zeroString = "00000";
// one assignment gets the padded number
var paddedNum = zeroString.substring((number + "").length, 4) + bareNum;
//output
alert("The padded number string is: " + paddedNum);
: 내가 가지고 올 수 어쨌든
,이 효율적이다
물론 입력을 확인해야합니다. 이 내용은 다음과 같은 조건에서 안정적으로 작동하기 때문에 :
zeroString에서 제로의뒷 이야기 :
나는 고정 길이 (14 자리) 제로 패딩 번호가 필요한 경우가 있습니다. 나는 이것을 어떻게 만들 수 있는지를 알고 싶었다.페이지로드시 수만 번 실행되므로 효율성이 중요합니다. 그것은 그대로 재사용이 가능하지 않으며, 조금 비 효과적입니다. 그것을 제외하고 그것은 매우 간단합니다.
원하는 n 자리 수의 패딩 된 문자열의 경우이 메서드에는 (적어도) n + 1 개의 0 문자열이 필요합니다. 인덱스 0은 문자열의 첫 번째 문자입니다. 사용되지 않을 것이므로 실제로는 아무 것도 될 수 있습니다.
참고 또한 string.substring()이 string.substr() 다르다!
var bareNum = 42 + '';
var zeroString = "000000000000000";
var paddedNum = zeroString.substring(bareNumber.length, 14) + bareNum
이 문자열의 길이와 일치하는 위치에서 시작 zeroString에서 제로 당긴, 세번째 줄만큼이 "14"로 (14)의 필요한 길이로 제로를 얻기 위해 계속 낮은 정수 zeroString의 문자 수보다 많으면 작동합니다.
사용 String.JS librairy 기능 padLeft : 모든 최신 브라우저에서
S('123').padLeft(5, '0').s --> 0
당신이 사용할 수있는
numberStr.padStart(4, "0");
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
function zeroPad(num) {
return num.toString().padStart(4, "0");
}
var numbers = [1310, 120, 10, 7];
numbers.forEach(
function(num) {
var paddedNum = zeroPad(num);
console.log(paddedNum);
}
);
다른 모든 경우를 문자열로 변환하는 것처럼 1310을 "1310"문자열로 변환하지 않으시겠습니까? –
나는 Šime Vidas에 동의한다 - 아래의 나의 대답은 그렇게 할 것이다. –
다음을 참조하십시오. http://stackoverflow.com/questions/1267283/how-can-i-create-a-zerofilled-value-using-javascript – Thai