source

JavaScript에서 '1'을 '0001'로 변환

goodcode 2023. 8. 24. 22:50
반응형

JavaScript에서 '1'을 '0001'로 변환

중복 가능성:
결정된 길이에 도달하기 위해 문자열을 패딩할 수 있는 자바스크립트 기능이 있습니까?

타사 라이브러리를 사용하지 않고 자바스크립트에서 '1'을 '0001'로 변환하려면 어떻게 해야 합니까?나는 스프릿을 사용하여 php로 이것을 했습니다:$time = sprintf('%04.0f',$time_arr[$i]);

이것은 영리한 작은 속임수입니다(SO에서 본 적이 있다고 생각합니다).

var str = "" + 1
var pad = "0000"
var ans = pad.substring(0, pad.length - str.length) + str

자바스크립트는 서브스트링에 대한 두 번째 인수가 부정적이어서 "정확히 오버플로"(또는 보는 방법에 따라 잘못됨)인 경우 일부 언어보다 더 관대합니다.

즉, 위와 같은 경우:

  • 1 -> "0001"
  • 12345 -> "12345"

음수를 지원하는 것은 연습으로 남습니다 ;-)

자바스크립트의 유연성을 보여주기 위해: 당신은 이것을 위해 하나의 라이너를 사용할 수 있습니다.

function padLeft(nr, n, str){
    return Array(n-String(nr).length+1).join(str||'0')+nr;
}
//or as a Number prototype method:
Number.prototype.padLeft = function (n,str){
    return Array(n-String(this).length+1).join(str||'0')+this;
}
//examples
console.log(padLeft(23,5));       //=> '00023'
console.log((23).padLeft(5));     //=> '00023'
console.log((23).padLeft(5,' ')); //=> '   23'
console.log(padLeft(23,5,'>>'));  //=> '>>>>>>23'

음수에도 사용하려면 다음을 수행합니다.

Number.prototype.padLeft = function (n,str) {
    return (this < 0 ? '-' : '') + 
            Array(n-String(Math.abs(this)).length+1)
             .join(str||'0') + 
           (Math.abs(this));
}
console.log((-23).padLeft(5));     //=> '-00023'

사용하지 않으려는 경우 다른 방법Array:

number.prototype.padLeft = function (len,chr) {
 var self = Math.abs(this)+'';
 return (this<0 && '-' || '')+
         (String(Math.pow( 10, (len || 2)-self.length))
           .slice(1).replace(/0/g,chr||'0') + self);
}
String.prototype.padZero= function(len, c){
    var s= this, c= c || '0';
    while(s.length< len) s= c+ s;
    return s;
}

이름에도 불구하고 공백을 포함한 모든 문자로 왼쪽 패드를 사용할 수 있습니다.저는 오른쪽 패딩을 사용한 적이 없지만, 그것은 충분히 쉬울 것입니다.

다음 개체를 사용합니다.

function Padder(len, pad) {
  if (len === undefined) {
    len = 1;
  } else if (pad === undefined) {
    pad = '0';
  }

  var pads = '';
  while (pads.length < len) {
    pads += pad;
  }

  this.pad = function (what) {
    var s = what.toString();
    return pads.substring(0, pads.length - s.length) + s;
  };
}

이를 통해 다양한 "패딩"을 쉽게 정의할 수 있습니다.

var zero4 = new Padder(4);
zero4.pad(12); // "0012"
zero4.pad(12345); // "12345"
zero4.pad("xx"); // "00xx"
var x3 = new Padder(3, "x");
x3.pad(12); // "x12"

언급URL : https://stackoverflow.com/questions/5366849/convert-1-to-0001-in-javascript

반응형