>  기사  >  웹 프론트엔드  >  JavaScript에서 문자열을 효율적으로 채울 수 있는 방법은 무엇입니까?

JavaScript에서 문자열을 효율적으로 채울 수 있는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-23 12:31:17836검색

How Can I Efficiently Pad Strings in JavaScript?

문자열 패딩을 위한 JavaScript 함수

소개

문자열 패딩에는 시작 또는 끝에 문자를 추가하여 원하는 길이. 이는 테이블 정렬이나 숫자 서식 지정과 같은 다양한 시나리오에 유용합니다. 이 기사에서는 문자열 패딩을 용이하게 하는 JavaScript 함수를 살펴봅니다.

ES8 이전 솔루션

ECMAScript 8(ES8) 이전에 개발자는 문자열 패딩을 위해 다양한 방법을 사용했습니다. 한 가지 간단한 접근 방식은 사전 정의된 패딩 값으로 문자열을 연결하고 결과를 분할하여 원하는 길이를 얻는 것입니다.

var n = 123;

String("00000" + n).slice(-5); // returns 00123
("00000" + n).slice(-5); // returns 00123
("     " + n).slice(-5); // returns "  123" (with two spaces)

또 다른 솔루션은 paddingLeft 메서드를 사용하여 문자열 객체를 확장합니다.

String.prototype.paddingLeft = function (paddingValue) {
   return String(paddingValue + this).slice(-paddingValue.length);
};

이 방법은 다음과 같이 사용할 수 있습니다:

function getFormattedTime(date) {
  var hours = date.getHours();
  var minutes = date.getMinutes();

  hours = hours.toString().paddingLeft("00");
  minutes = minutes.toString().paddingLeft("00");

  return "{0}:{1}".format(hours, minutes);
};

String.prototype.format = function () {
    var args = arguments;
    return this.replace(/{(\d+)}/g, function (match, number) {
        return typeof args[number] != 'undefined' ? args[number] : match;
    });
};

ES8 및 Beyond

ES8에서는 문자열 패딩을 단순화하는 String.padStart 메서드를 도입했습니다.

"Jonas".padStart(10); // Default pad string is a space
"42".padStart(6, "0"); // Pad with "0"
"*".padStart(8, "-/|\"); // produces '-/|\-/|*'

String.padStart를 사용할 수 없는 경우 폴리필을 사용하여 추가할 수 있습니다. 다음 폴리필은 문자열 객체를 확장합니다.

String.prototype.padLeft = function (desiredLength) {
  var padString = " ";
  if (arguments.length > 1) {
    padString = arguments[1];
  }

  var padLength = desiredLength - this.length;
  if (padLength >= 0) {
    return padString.repeat(Math.ceil(padLength / padString.length)).slice(0, padLength) + this;
  } else {
    return this;
  }
};

위 내용은 JavaScript에서 문자열을 효율적으로 채울 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.