0부터1자리 숫자 앞에 숫자를 붙여서 포맷하려면 어떻게 해야 하나요?
두 자리 숫자로 숫자를 포맷하고 싶습니다.는 이 가 발생하게 됩니다.0
–9
통과되었으므로 .00
–09
.
JavaScript에 숫자 포맷이 있나요?
편집 (2021)
더 이상 이렇게 손으로 숫자를 포맷할 필요가 없습니다.이 대답은 IE가 중요했던 2011년 먼 해와 바벨과 번들러는 그저 훌륭하고 희망적인 꿈이었을 때 쓰여졌습니다.
이 답변을 삭제하는 것은 잘못이라고 생각합니다만, 만약 당신이 여기에 있는 것을 알게 되면, 이 편집 시점에서 이 질문에 대한 투표율이 두 번째로 높은 답변에 주목해 주셨으면 합니다.
의 옵션 파라미터와 함께 를 사용하는 방법에 대해 설명합니다.Exciting 。아래는 고객님의 편의를 위해 이 방법을 사용하여 원래 답변에서 세 가지 예를 모두 재현했습니다.
[7, 7.5, -7.2345].forEach(myNumber => {
let formattedNumber = myNumber.toLocaleString('en-US', {
minimumIntegerDigits: 2,
useGrouping: false
})
console.log(
'Input: ' + myNumber + '\n' +
'Output: ' + formattedNumber
)
})
원답:
제가 찾은 가장 좋은 방법은 다음과 같습니다.
(이 간단한 버전은 양의 정수에서만 작동합니다.)
var myNumber = 7;
var formattedNumber = ("0" + myNumber).slice(-2);
console.log(formattedNumber);
소수점에서는 이 코드를 사용할 수 있습니다(단, 조금 엉성합니다).
var myNumber = 7.5;
var dec = myNumber - Math.floor(myNumber);
myNumber = myNumber - dec;
var formattedNumber = ("0" + myNumber).slice(-2) + dec.toString().substr(1);
console.log(formattedNumber);
마지막으로 음수일 가능성에 대처해야 한다면, 부호를 저장하고, 번호의 절대치에 서식을 적용하고, 그 후 부호를 다시 적용하는 것이 가장 좋습니다.이 방법에서는 숫자를 총 2자리로 제한하지 않습니다.대신 소수점(정수 부분)의 왼쪽으로만 숫자를 제한합니다.(부호를 결정하는 선은 여기에 있습니다.)
var myNumber = -7.2345;
var sign = myNumber?myNumber<0?-1:1:0;
myNumber = myNumber * sign + ''; // poor man's absolute value
var dec = myNumber.match(/\.\d+$/);
var int = myNumber.match(/^[^\.]+/);
var formattedNumber = (sign < 0 ? '-' : '') + ("0" + int).slice(-2) + (dec !== null ? dec : '');
console.log(formattedNumber);
임의의 번호로 toLocaleString() 메서드를 사용합니다.그래서 숫자 6에 대해서는 아래와 같이 원하는 결과를 얻을 수 있습니다.
(6).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false})
문자열 '06'을 생성합니다.
숫자가 9보다 클 경우 숫자를 문자열(일관성)로 변환합니다.그렇지 않으면 0을 추가합니다.
function n(n){
return n > 9 ? "" + n: "0" + n;
}
n( 9); //Returns "09"
n(10); //Returns "10"
n(999);//Returns "999"
모든 최신 브라우저에서 사용할 수 있습니다.
numberStr.padStart(2, "0");
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
function zeroPad(numberStr) {
return numberStr.padStart(2, "0");
}
var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
numbers.forEach(
function(num) {
var numString = num.toString();
var paddedNum = zeroPad(numString);
console.log(paddedNum);
}
);
제가 주로 사용하는 간단한 숫자 패딩 기능이 있습니다.패딩의 양에 관계없이 사용할 수 있습니다.
function leftPad(number, targetLength) {
var output = number + '';
while (output.length < targetLength) {
output = '0' + output;
}
return output;
}
예:
leftPad(1, 2) // 01
leftPad(10, 2) // 10
leftPad(100, 2) // 100
leftPad(1, 3) // 001
leftPad(1, 8) // 00000001
@Lifehack의 답변은 나에게 매우 유용했다.한줄로 양수를 구할 수 있을 것 같다.
String(input).padStart(2, '0');
.padStart
★★★★
상세정보 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
check this example:function n(num, len = 2) {
return `${num}`.padStart(len, '0');
}
console.log(n( 9)); //print "09"
console.log(n(10)); //print "10"
console.log(n(999)); //print "999"
console.log(n(999,6));//print "000999"
("0" + (date.getMonth() + 1)).slice(-2);
("0" + (date.getDay())).slice(-2);
다음 작업을 수행할 수 있습니다.
function pad2(number) {
return (number < 10 ? '0' : '') + number
}
예를 들어:
document.write(pad2(0) + '<br />');
document.write(pad2(1) + '<br />');
document.write(pad2(2) + '<br />');
document.write(pad2(10) + '<br />');
document.write(pad2(15) + '<br />');
결과:
00
01
02
10
15
숫자 대신 문자열이 있는 것 같습니다.사용방법:
var num = document.getElementById('input').value,
replacement = num.replace(/^(\d)$/, '0$1');
document.getElementById('input').value = replacement;
다음은 예를 제시하겠습니다.http://jsfiddle.net/xtgFp/
여기 나에게 효과가 있었던 매우 간단한 해결책이 있다.
먼저 번호를 유지할 변수를 선언합니다.
var number;
이제 숫자를 문자열로 변환하고 다른 변수로 유지합니다.
var numberStr = number.toString();
이제 이 문자열의 길이를 테스트할 수 있습니다. 이 문자열의 길이가 원하는 길이보다 작을 경우 시작 부분에 '0'을 추가할 수 있습니다.
if(numberStr.length < 2){
number = '0' + number;
}
이제 원하는 대로 번호를 사용합니다.
console.log(number);
빠르고 더러운 라이너 하나...
function zpad(n, len) {
return 0..toFixed(len).slice(2,-n.toString().length)+n.toString();
}
심플하고, 동작도 꽤 양호합니다.
function twoDigit(number) {
var twodigit = number >= 10 ? number : "0"+number.toString();
return twodigit;
}
제가 찾은 가장 쉬운 해결책은 다음과 같습니다.
let num = 9; // any number between 0 & 99
let result = ( '0' + num ).substr( -2 );
이전 답변의 개선된 버전
function atLeast2Digit(n){
n = parseInt(n); //ex. if already passed '05' it will be converted to number 5
var ret = n > 9 ? "" + n: "0" + n;
return ret;
}
alert(atLeast2Digit(5));
오래된 포스트인 것은 알지만, 저는 좀 더 유연하고 OO 솔루션 옵션을 제공하고 싶었습니다.
javascript를했습니다.Number
「 」 「 」 、 「 」 、 「 」
Number.prototype.zeroPad = function(digits) {
var loop = digits;
var zeros = "";
while (loop) {
zeros += "0";
loop--;
}
return (this.toString().length > digits) ?
this.toString() : (zeros + this).slice(-digits);
}
var v = 5;
console.log(v.zeroPad(2)); // returns "05"
console.log(v.zeroPad(4)); // returns "0005"
편집: 요청된 숫자보다 긴 숫자를 잘라내는 것을 방지하기 위해 코드를 추가합니다.
메모: IE 이외에서는 사용되지 않습니다.사용하다padStart()
★★★★★★ 。
내 버전:
`${Math.trunc(num / 10)}${Math.trunc(num % 10)}`;
const func = (num) => `${Math.trunc(num / 10)}${Math.trunc(num % 10)}`;
const nums = [1, 3, 5, 6, 8, 9, 10, 20, 56, 80];
nums.forEach(num => console.log(func(num)));
JavaScript에 내장된 번호 포맷은 없지만 이를 실현하는 라이브러리가 있습니다.
- underscore.string은 sprintf 함수를 제공합니다(다른 많은 유용한 포맷터와 함께).
- javascript-subscriptf - 언더스코어.string sss jav 。
ES6 Arrow 기능에 대해 업데이트됨(최근의 거의 모든 브라우저에서 지원됨, "Can"을 참조하십시오.아이유)
const formatNumber = n => ("0" + n).slice(-2);
또는
function zpad(n,l){
return rep(l-n.toString().length, '0') + n.toString();
}
와 함께
function rep(len, chr) {
return new Array(len+1).join(chr);
}
동시에 숫자를 제한하는 경우:
function pad2(number) {
number = (number < 10 ? '0' : '') + number;
number = number.substring(0,2);
return number;
}
또, 2 자리수를 넘는 값도 잘라냅니다.나는 이것을 fanaur의 해결책으로 확장하고 있다.
`${number}`.replace(/^(\d)$/, '0$1');
Regex가 최고야.
<html>
<head>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#test').keypress(allowOnlyTwoPositiveDigts);
});
function allowOnlyTwoPositiveDigts(e){
var test = /^[\-]?[0-9]{1,2}?$/
return test.test(this.value+String.fromCharCode(e.which))
}
</script>
</head>
<body>
<input id="test" type="text" />
</body>
</html>
다음은 임의의 숫자에 대해 작동하는 간단한 재귀적 솔루션입니다.
function numToNDigitStr(num, n)
{
if(num >= Math.pow(10, n - 1)) { return num; }
return "0" + numToNDigitStr(num, n-1);
}
프로젝트에 lodash가 없다면 하나의 기능을 사용하기 위해 라이브러리 전체를 추가하는 것은 무리입니다.내가 본 문제 중 가장 정교한 해결책이야
_.padStart(num, 2, '0')
간단한 포맷이 필요할 때마다 호출하는 꽤 간단한 포맷 기능을 만들었습니다.때 두 한 자릿수를 있습니다..Sat Sep 29 2018 - 00:05:44
이 함수는 utils 변수의 일부로 사용되므로 다음과 같이 불립니다.
let timestamp = utils._dateFormatter('your date string');
var utils = {
_dateFormatter: function(dateString) {
let d = new Date(dateString);
let hours = d.getHours();
let minutes = d.getMinutes();
let seconds = d.getSeconds();
d = d.toDateString();
if (hours < 10) {
hours = '0' + hours;
}
if (minutes < 10) {
minutes = '0' + minutes;
}
if (seconds < 10) {
seconds = '0' + seconds;
}
let formattedDate = d + ' - ' + hours + ':' + minutes + ':' + seconds;
return formattedDate;
}
}
나의 예와 같은 예
var n =9;
var checkval=('00'+n).slice(-2);
console.log(checkval)
출력은09
를 사용할 수도 있습니다.Intl
ECMAScript International API는 다음과 같이 간단하게 번호를 맞춤화할 수 있습니다.
let Number= Intl.NumberFormat('en-US', {
minimumIntegerDigits: 2,
minimumFractionDigits: 2
});
console.log(Number.format(2));
//02.00
또한 많은 임베디드 함수가 내장되어 있어 문서화를 위해 프리픽스 표기법, 기호, 돈 형식 등을 입력할 수 있습니다.여기를 클릭해 주세요.
여기 제 버전이 있습니다.다른 시나리오에 쉽게 적응할 수 있습니다.
function setNumericFormat(value) {
var length = value.toString().length;
if (length < 4) {
var prefix = "";
for (var i = 1; i <= 4 - length; i++) {
prefix += "0";
}
return prefix + value.toString();
}
return value.toString();
}
function colorOf(r,g,b){
var f = function (x) {
return (x<16 ? '0' : '') + x.toString(16)
};
return "#" + f(r) + f(g) + f(b);
}
언급URL : https://stackoverflow.com/questions/8043026/how-to-format-numbers-by-prepending-0-to-single-digit-numbers
'programing' 카테고리의 다른 글
Jackson + Builder pattern? (0) | 2022.10.30 |
---|---|
x초마다 메서드를 호출하려면 어떻게 해야 합니까? (0) | 2022.10.30 |
go lang에서 db에서 데이터를 가져오는 방법 (0) | 2022.10.30 |
표의 열 순서를 걱정할 이유가 있나요? (0) | 2022.10.30 |
JavaScript .protype은 어떻게 동작합니까? (0) | 2022.10.30 |