সিঙ্গল-ডিজিটের সংখ্যাগুলিকে 0 করে কীভাবে সংখ্যাগুলি ফর্ম্যাট করবেন?


296

আমি দুটি সংখ্যার জন্য একটি সংখ্যার ফর্ম্যাট করতে চাই। সমস্যা যখন সৃষ্টি হয় 0- 9, পাস করা হয়েছে তাই আমি এটি ফরম্যাট করা প্রয়োজন 00- 09

জাভাস্ক্রিপ্টে একটি সংখ্যা বিন্যাস আছে?


উত্তর:


593

আমি যে সর্বোত্তম পদ্ধতিটি পেয়েছি তা হ'ল নিম্নলিখিতগুলির মতো:

(নোট করুন যে এই সাধারণ সংস্করণটি কেবল ইতিবাচক পূর্ণসংখ্যার জন্য কাজ করে)

var myNumber = 7;
var formattedNumber = ("0" + myNumber).slice(-2);
console.log(formattedNumber);

দশমিকের জন্য, আপনি এই কোডটি ব্যবহার করতে পারেন (এটি যদিও কিছুটা opালু)।

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);


4
@ কিথপাওয়ার যে ডেমো এটি চিত্রিত করে না
জোসেফ মেরিকল

1
@ কিথপাওয়ার এখানে একটি ডেমো যা উপরের পদ্ধতিটি চিত্রিত করে: jsfiddle.net/bkTX3 । বাক্সটিতে ক্লিক করুন, মানটি পরিবর্তন করুন এবং বাক্সটিকে কার্যত দেখতে দেখতে ক্লিক করুন।
জোসেফ মেরিকলে

1
@Joseph .75 75. মধ্যে রুপান্তরিত হয়
Galled

@ গলিত সাধারণত আমার অভিজ্ঞতায় ফর্ম্যাট করার এই ধরণের সাথে জিনিসটির প্রয়োজন হয় না, তবে আমি এমন একটি সম্পাদনা একসাথে ফেলেছি যা সেই দৃশ্যকে আবরণ করবে।
জোসেফ মেরিকলে

এছাড়াও কটাক্ষপাত আছে .toPrecision()পদ্ধতি w3schools.com/jsref/jsref_toprecision.asp
ওলেগ

133

যদি সংখ্যাটি 9 এর বেশি হয় তবে সংখ্যাটিকে একটি স্ট্রিং (ধারাবাহিকতা) এ রূপান্তর করুন। অন্যথায়, একটি শূন্য যোগ করুন।

function n(n){
    return n > 9 ? "" + n: "0" + n;
}

n( 9); //Returns "09"
n(10); //Returns "10"
n(999);//Returns "999"

4
নেতিবাচক সময় সম্পর্কে কি। 0-1: 20: 00
mjwrazor

131

ToLocaleString () পদ্ধতিটি যে কোনও সংখ্যায় ব্যবহার করুন। সুতরাং নীচে প্রদর্শিত হিসাবে 6 নম্বর, আপনি পছন্দসই ফলাফল পেতে পারেন।

(6).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false})

'06' স্ট্রিং তৈরি করবে।


17
হাত দিয়ে স্ট্রিং কাটার চেয়ে এটি অবশ্যই ভাল। আরও সংক্ষেপে, এবং যদি আপনার পৃষ্ঠাটি মার্কিন যুক্তরাষ্ট্রে ব্যবহার করা যেতে পারে তবে আপনি এটিতে এই টুইট করতে চান:(6).toLocaleString(undefined, {minimumIntegerDigits: 2})
মার্ক স্লেটার

2
আইই 9 এর সাহায্যে এটি 06 এর পরিবর্তে 6.00 তৈরি করে
ড্র করুন

1
কাজ করে, তবে আপনার আইই> = ১১ প্রয়োজন
সাফটপ্রেস৯৯

বা intl.js পলিফিল সহ
ম্যাক্সিসাম

2
আইই উপেক্ষা করার জন্য আমি সকলেই প্রস্তুত, তবে এটি মোবাইল ব্রাউজারগুলিতে ভাল সমর্থন করে না। src: developer.mozilla.org/en/docs/Web/JavaScript/References/…
chetan92

50

এখানে আমি একটি সাধারণ নম্বর প্যাডিং ফাংশন রাখি যা আমি সাধারণত ব্যবহার করি। এটি কোনও পরিমাণ প্যাডিংয়ের অনুমতি দেয়।

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

নেতিবাচক সময় নিয়েও সমস্যা রয়েছে। এটা কি ঠিক করা যাবে?
mjwrazor

39

সমস্ত আধুনিক ব্রাউজারে আপনি ব্যবহার করতে পারেন

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);
  }
);



এছাড়াও এটি নোডের কিছু পুরানো সংস্করণে কাজ করে না (সম্ভবত নোড 8 এর চেয়ে পুরানো কিছু)
জিলসভি

20

@ লাইফহ্যাকের উত্তরটি আমার পক্ষে খুব কার্যকর ছিল; যেখানে আমি মনে করি আমরা এটি ইতিবাচক সংখ্যার জন্য এক লাইনে করতে পারি

 String(input).padStart(2, '0');

12
("0" + (date.getMonth() + 1)).slice(-2);
("0" + (date.getDay())).slice(-2);

1
আমি মনে করি আপনি মাসটির দিনটি বোঝার জন্য নিম্নলিখিতটি বোঝাতে চেয়েছিলেন:("0" + (date.getDate())).slice(-2);
জেফ মোলার

11

আপনি করতে পারেন:

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

8

মনে হচ্ছে আপনার সংখ্যার পরিবর্তে একটি স্ট্রিং থাকতে পারে। এটা ব্যবহার কর:

var num = document.getElementById('input').value,
    replacement = num.replace(/^(\d)$/, '0$1');
document.getElementById('input').value = replacement;

এখানে একটি উদাহরণ: http://jsfiddle.net/xtgFp/


7

দ্রুত এবং নোংরা ওয়ান লাইনার ....

function zpad(n, len) {
  return 0..toFixed(len).slice(2,-n.toString().length)+n.toString();
}

1
চমৎকার কাজ. এটি এর মতো এক্সটেনশন পদ্ধতি হিসাবে ব্যবহার করা আরও ভাল:Number.prototype.leftPad = String.prototype.leftPad = function (pad) { return 0..toFixed(pad).slice(2, -this.toString().length) + this.toString(); };
কনডাক্টডক্লাভার

6

এটি সহজ এবং বেশ ভাল কাজ করে:

function twoDigit(number) {
  var twodigit = number >= 10 ? number : "0"+number.toString();
  return twodigit;
}

1
হিসাবে লিখিত হতে পারে: রিটার্ন নম্বর> = 10? সংখ্যা: "0" + সংখ্যা। স্ট্রিং ();
এপিএফজেড

6

এখানে একটি খুব সহজ সমাধান যা আমার পক্ষে ভালভাবে কাজ করেছে।

প্রথমে আপনার নম্বরটি ধরে রাখতে একটি ভেরিয়েবল ঘোষণা করুন।

var number;

এখন নম্বরটি স্ট্রিংয়ে রূপান্তর করুন এবং এটি অন্য ভেরিয়েবলের সাথে ধরে রাখুন;

var numberStr = number.toString();

এখন আপনি এই স্ট্রিংয়ের দৈর্ঘ্য পরীক্ষা করতে পারেন, এটি যদি কাঙ্ক্ষিতের চেয়ে কম হয় তবে আপনি শুরুতে একটি 'শূন্য' যুক্ত করতে পারেন।

if(numberStr.length < 2){
      number = '0' + number;
}

এখন পছন্দসই নম্বরটি ব্যবহার করুন

console.log(number);

6

আমি খুঁজে পাওয়া সবচেয়ে সহজ সমাধান এখানে:

let num = 9; // any number between 0 & 99
let result = ( '0' + num ).substr( -2 );

5

পূর্ববর্তী উত্তরের উন্নত সংস্করণ

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));


5

আমি জানি এটি একটি প্রাচীন পোস্ট, তবে আমি আরও নমনীয় এবং ওও সমাধান বিকল্প সরবরাহ করতে চেয়েছিলাম।

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"

সম্পাদনা করুন: আপনার অনুরোধ করা অঙ্কগুলির চেয়ে দীর্ঘ সংখ্যা কাটা রোধ করতে কোড যুক্ত করুন।

দ্রষ্টব্য: এটি আইই ব্যতীত সমস্ত ক্ষেত্রে অপ্রচলিত। padStart()পরিবর্তে ব্যবহার করুন।


4

জাভাস্ক্রিপ্টের জন্য কোনও অন্তর্নির্মিত নম্বর বিন্যাসক নেই, তবে কিছু গ্রন্থাগার রয়েছে যা এটি সম্পাদন করে:

  1. আন্ডারস্কোর. স্ট্রিং একটি স্প্রিন্টফ ফাংশন সরবরাহ করে (অন্যান্য অনেক দরকারী ফর্ম্যাটারের সাথে)
  2. জাভাস্ক্রিপ্ট-স্প্রিন্টফ , যা আন্ডারস্কোর করে st স্ট্রিং থেকে ধার নেয়।

3

অথবা

function zpad(n,l){
   return rep(l-n.toString().length, '0') + n.toString();
}

সঙ্গে

function rep(len, chr) { 
   return new Array(len+1).join(chr);
}

3

আপনি যদি একই সাথে আপনার অঙ্কগুলি সীমাবদ্ধ করতে চান:

function pad2(number) {
  number = (number < 10 ? '0' : '') + number;
  number = number.substring(0,2);
  return number;
}

এটি দুটি সংখ্যার বেশি হওয়া কোনও মানকেও কাটাতে পারে। আমি এটিকে ফান’র সমাধানের দিকে বাড়িয়ে দিচ্ছি।


2
<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>

2

এখানে একটি সাধারণ পুনরাবৃত্ত সমাধান যা সংখ্যার সংখ্যার জন্য কাজ করে।

function numToNDigitStr(num, n)
{
    if(num >=  Math.pow(10, n - 1)) { return num; }
    return "0" + numToNDigitStr(num, n-1);
}

2

আপনার প্রকল্পে লোডাশ না থাকলে কেবল একটি ফাংশন ব্যবহারের জন্য পুরো লাইব্রেরি যুক্ত করা একটি ওভারকিল হবে। এটি আপনার সমস্যার সবচেয়ে পরিশীলিত সমাধান আমি দেখেছি।

_.padStart(num, 2, '0')

1

এখানে আমার সংস্করণ। অন্যান্য পরিস্থিতিতে খুব সহজেই মানিয়ে নেওয়া যায়।

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();
}

1
    function colorOf(r,g,b){
  var f = function (x) {
    return (x<16 ? '0' : '') + x.toString(16) 
  };

  return "#" +  f(r) + f(g) + f(b);
}

আপনার উত্তরগুলিতে কেবল কোড নয়, আপনার কিছু প্রসঙ্গ যুক্ত করার কথা বিবেচনা করা উচিত।
মাইক

1

যে কেউ সময়ের পার্থক্য রাখতে চায় এবং ফলাফল থাকতে পারে যে এখানে নেতিবাচক সংখ্যা নিতে পারে তার জন্য এটি ভাল। প্যাড (3) = "03", প্যাড (-2) = "-02", প্যাড (-234) = "-234"

pad = function(n){
  if(n >= 0){
    return n > 9 ? "" + n : "0" + n;
  }else{
    return n < -9 ? "" + n : "-0" + Math.abs(n);
  }
}

1

এই ফাংশনটি দিয়ে আপনি যে কোনও এন ডিজিট দিয়ে মুদ্রণ করতে পারেন

function frmtDigit(num, n) {
    isMinus = num < 0;
    if (isMinus)
        num *= -1;
    digit = '';
    if (typeof n == 'undefined')
        n = 2;//two digits
    for (i = 1; i < n; i++) {
        if (num < (1 + Array(i + 1).join("0")))
            digit += '0';
    }
    digit = (isMinus ? '-' : '') + digit + num;
    return digit;
};

1

আমার উদাহরণটি হ'ল :

<div id="showTime"></div>

    function x() {
    var showTime = document.getElementById("showTime");
    var myTime = new Date();
    var hour = myTime.getHours();
    var minu = myTime.getMinutes();
    var secs = myTime.getSeconds();
    if (hour < 10) {
        hour = "0" + hour
    };
    if (minu < 10) {
        minu = "0" + minu
    };
    if (secs < 10) {
        secs = "0" + secs
    };

    showTime.innerHTML = hour + ":" + minu + ":" + secs;
}

setInterval("x()", 1000)

1

`${number}`.replace(/^(\d)$/, '0$1');

রিজেক্স সেরা।


এটি উপরের জো এর উত্তর হিসাবে প্রায় একই হিসাবে প্রদর্শিত হবে । আপনার উত্তরটি উন্নত করতে অতিরিক্ত তথ্য যুক্ত করার বিষয়টি বিবেচনা করুন বা এটি সম্পূর্ণ মুছুন।
ইথান

1

জাভাস্ক্রিপ্টে AS ডাটা টাইপটি গতিশীলভাবে নির্ধারিত হয় এটি 04 হিসাবে 4 হিসাবে বিবেচনা করে শর্তযুক্ত বিবৃতি ব্যবহার করুন যদি মান কম হয় 10 তবে তার আগে স্ট্রিং তৈরি করে 0 যুক্ত করুন উদাহরণস্বরূপ,

var x=4;
  x = x<10?"0"+x:x
 console.log(x); // 04

1

আমি একটি খুব সাধারণ ফর্ম্যাট ফাংশনটি তৈরি করেছি যা যখনই আমার ডায়াল্ট করার জন্য সাধারণ তারিখের প্রয়োজন হয় তখনই আমি কল করি। এটি একক অঙ্কগুলি দশ বছরের কম হলে ডাবল ডিজিটে ফর্ম্যাট করার কাজ করে ItSat Sep 29 2018 - 00:05:44

এই ফাংশনটি ব্যবহারের ভেরিয়েবলের অংশ হিসাবে ব্যবহৃত হয় তাই এটি হিসাবে ডাকা হয়:

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;
  }
}

1

ES6 তীর ফাংশনগুলির জন্য আপডেট হয়েছে (প্রায় সব আধুনিক ব্রাউজারে সমর্থিত, CanIUse দেখুন )

const formatNumber = n => ("0" + n).slice(-2);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.