>  기사  >  웹 프론트엔드  >  JS에서 문자열 형식을 지정하기 위해 padStart() 및 padEnd()를 사용하는 방법은 무엇입니까? (팁)

JS에서 문자열 형식을 지정하기 위해 padStart() 및 padEnd()를 사용하는 방법은 무엇입니까? (팁)

青灯夜游
青灯夜游앞으로
2020-06-29 10:22:141854검색

JS에서 문자열 형식을 지정하기 위해 padStart() 및 padEnd()를 사용하는 방법은 무엇입니까? (팁)

몇일 전 JavaScript를 사용하여 카운트다운 타이머를 구축하고 있었기 때문에 초와 밀리초 형식을 지정해야 했습니다. 즉, 초는 항상 2자리, 밀리초는 항상 3자리가 되기를 원했습니다. 1초를 01로 표시하고, 1밀리초를 001로 표시하고 싶습니다. 1 秒显示为 011 毫秒显示为 001

我最终写出了自己的函数来“填充”这些数字,但是我发现JavaScript中内置了函数 padStart()padEnd()来实现这些功能。在本文中,我们来看一下如何在JavaScript中利用这些内置函数!

用例

让我们从介绍几种不同的填充用例开始。

标签和值

假设你在同一行上有标签和值,例如 name:zhangsan 和  Phone Number:(555)-555-1234。如果把他们放在一起看起来会有点奇怪,会是这样:

Name: zhangsan
Phone Number: (555)-555-1234

你可能想要这个。

Name:           zhangsan
Phone Number:   (555)555-1234

或这个...

        Name: zhangsan
Phone Number: (555)555-1234

金额

在中国,显示价格时通常显示两位数的角、分。所以代替这个...

¥10.1

你会想要这个。

¥10.01

日期

对于日期,日期和月份都需要2位数字。所以代替这个...

2020-5-4

你会想要这个。

2020-05-04

时间

与上面的日期类似,对于计时器,你需要2位数字表示秒,3位数字表示毫秒。所以代替这个...

1:1

你会想要这个。

01:001

padstart()

让我们从 padStart() 以及标签和值示例开始。假设我们希望标签彼此正确对齐,以使值在同一位置开始。

        Name: zhangsan
Phone Number: (555)555-1234

由于 Phone Number 是两个标签中较长的一个,因此我们要在 Name 标签的开头加上空格。为了将来的需要,我们不要把它专门填充到电话号码的长度,我们把它填充到长一点,比如说20个字符。这样一来,如果你在未来使用较长的标签,这一招仍然有效。

在填充之前,这是用于显示此信息的入门代码。

const label1 = "Name";
const label2 = "Phone Number";
const name = "zhangsan"
const phoneNumber = "(555)-555-1234";

console.log(label1 + ": " + name);
console.log(label2 + ": " + phoneNumber);

//Name: zhangsan
//Phone Number: (555)-555-1234

现在,让我们填充第一个标签。要调用 padStart(),你需要传递两个参数:一个用于填充字符串的目标长度,另一个用于你希望填充的字符。在这种情况下,我们希望长度为20,而填充字符为空格。

const label1 = "Name";
const label2 = "Phone Number";
const name = "zhangsan"
const phoneNumber = "(555)-555-1234";

console.log(label1.padStart(20, " ") + ": " + name);
console.log(label2 + ": " + phoneNumber);

//               Name: zhangsan
////Phone Number: (555)-555-1234

现在填充第二行。

const label1 = "Name";
const label2 = "Phone Number";
const name = "zhangsan"
const phoneNumber = "(555)-555-1234";

console.log(label1.padStart(20, " ") + ": " + name);
console.log(label2.padStart(20, " ") + ": " + phoneNumber);

//               Name: zhangsan
////     Phone Number: (555)-555-1234

padEnd()

对于相同的标签和值示例,让我们更改填充标签的方式。让我们将标签向左对齐,以便在末尾添加填充。

初始代码

const label1 = "Name";
const label2 = "Phone Number";
const name = "zhangsan"
const phoneNumber = "(555)-555-1234";

console.log(label1 + ": " + name);
console.log(label2 + ": " + phoneNumber);

//Name: zhangsan
//Phone Number: (555)-555-1234

现在,让我们填充第一个标签,与我们之前所做的类似,但有两个小区别。现在,我们使用 padEnd() 而不是padStart(),并且需要在填充之前将冒号与标签连接起来,这样我们就能确保冒号在正确的位置。

const label1 = "Name";
const label2 = "Phone Number";
const name = "zhangsan"
const phoneNumber = "(555)-555-1234";

console.log((label1 + ': ').padEnd(20, ' ') + name);
console.log(label2 + ": " + phoneNumber);

//Name:               zhangsan
//Phone Number: (555)-555-1234

现在两行都已填充。

const label1 = "Name";
const label2 = "Phone Number";
const name = "zhangsan"
const phoneNumber = "(555)-555-1234";

console.log((label1 + ': ').padEnd(20, ' ') + name);
console.log((label2 + ': ').padEnd(20, ' ') + phoneNumber);

//Name:               zhangsan
//Phone Number:       (555)-555-1234

数字(价格、日期、计时器等)呢?

padding函数是专门针对字符串而不是数字的,所以,我们需要先将数字转换为字符串。

价格

让我们看一下显示价格的初始代码。

const rmb = 10;
const cents = 1;
console.log("¥" + rmb + "." + cents); //¥10.1

要填充分,我们需要先将其转换为字符串,然后调用 padStart()

나는 결국 숫자를 "채우는" 함수를 직접 작성하게 되었는데, JavaScript에 이 작업을 수행하는

padStart()padEnd()

함수가 내장되어 있다는 것을 알게 되었습니다. 이 글에서는 JavaScript에 내장된 기능을 활용하는 방법을 살펴보겠습니다!

사용 사례

몇 가지 패딩 사용 사례를 소개하는 것부터 시작하겠습니다.

라벨 및 값

같은 줄에 라벨과 값이 있다고 가정해 보세요. 예를 들어 이름: zhangsan전화 번호: (555)-555-1234 . 그것들을 합치면 조금 이상해 보일 것입니다. 다음과 같을 것입니다:

const rmb = 10;
const cents = 1;
console.log("¥" + rmb + "." + cents.toString().padStart(2,0)); //¥10.01
이것을 원할 수도 있습니다.
const month = 2;
const year = 2020;

console.log(year + "-" + month); //2020-2

또는 이것...

const month = 2;
const year = 2020;

console.log(year + "-" + month.toString().padStart(2,"0")); // 2020-02

Amount

중국에서는 가격을 표시할 때 보통 두 자리 다임과 센트로 표시됩니다. 그래서 이것 대신에...

const seconds = 1;
const ms = 1;

console.log(seconds + ":" + ms); //1:1
당신은 이것을 원할 것입니다.
const seconds = 1;
const formattedSeconds = seconds.toString().padStart(2,0);
const ms = 1;
const formattedMs = ms.toString().padStart(3,0);

console.log(formattedSeconds + ":" + formattedMs); // 01:001

🎜Date🎜🎜🎜날짜는 일과 월 모두 2자리 숫자가 필요합니다. 그래서 이것 대신에... 🎜rrreee🎜 당신은 이것을 원할 것입니다. 🎜rrreee🎜🎜Time🎜🎜🎜위의 날짜와 유사하게 타이머의 경우 초에 2자리, 밀리초에 3자리가 필요합니다. 그래서 이것 대신에... 🎜rrreee🎜 당신은 이것을 원할 것입니다. 🎜rrreee🎜🎜🎜padstart()🎜🎜🎜🎜 padStart()와 레이블 및 값 예제부터 시작해 보겠습니다. 값이 동일한 위치에서 시작되도록 레이블이 서로 올바르게 정렬되기를 원한다고 가정해 보겠습니다. 🎜rrreee🎜 전화번호는 두 태그 중 더 길기 때문에 이름 태그 시작 부분에 공백을 추가해야 합니다. 향후 필요를 위해 특별히 전화번호 길이만큼 채우지 말고 조금 더 길게(예: 20자) 채우겠습니다. 이렇게 하면 나중에 더 긴 레이블을 사용해도 트릭이 계속 작동합니다. 🎜🎜이 정보를 입력하기 전에 표시하기 위한 시작 코드입니다. 🎜rrreee🎜이제 첫 번째 라벨을 채워보겠습니다. padStart()를 호출하려면 두 개의 매개변수를 전달합니다. 하나는 패딩된 문자열의 대상 길이에 대한 것이고 다른 하나는 패딩하려는 문자에 대한 것입니다. 이 경우 길이는 20이고 패딩 문자는 공백이기를 원합니다. 🎜rrreee🎜 이제 두 번째 행을 채워보세요. 🎜rrreee🎜🎜🎜padEnd()🎜🎜🎜🎜동일한 레이블과 값의 예에서 레이블을 채우는 방법을 변경해 보겠습니다. 끝에 패딩을 추가할 수 있도록 레이블을 왼쪽으로 정렬하겠습니다. 🎜🎜초기 코드🎜rrreee🎜이제 이전에 했던 것과 유사하지만 두 가지 작은 차이점이 있는 첫 번째 레이블을 채워 보겠습니다. 이제 padStart() 대신 padEnd()를 사용하고 패딩하기 전에 콜론을 레이블에 연결해야 하므로 콜론이 올바른 위치에 있는지 확인합니다. 🎜rrreee🎜이제 두 행이 모두 채워졌습니다. 🎜rrreee🎜🎜🎜숫자(가격, 날짜, 타이머 등)는 어떻습니까? 🎜🎜🎜🎜패딩 함수는 숫자 대신 문자열용이므로 먼저 숫자를 문자열로 변환해야 합니다. 🎜🎜🎜Price🎜🎜🎜가격을 표시하는 초기 코드를 살펴보겠습니다. 🎜rrreee🎜포인트를 채우려면 먼저 문자열로 변환한 다음 padStart() 함수를 호출하여 길이를 1로, 패딩 문자를 '0'으로 지정해야 합니다. 🎜🎜Date🎜🎜 🎜날짜를 표시하는 초기 코드입니다. 🎜rrreee🎜이제 월을 입력하여 두 자릿수인지 확인해 보겠습니다. 🎜rrreee🎜🎜Timer🎜🎜🎜마지막으로 타이머에서는 두 개의 서로 다른 숫자, 초 및 밀리초의 형식을 지정하려고 합니다. 동일한 원칙이 적용되지만. 초기 코드입니다. 🎜rrreee🎜 이제 패딩은 읽기 쉽도록 별도의 줄로 하겠습니다. 🎜rrreee🎜🎜🎜마지막으로🎜🎜🎜🎜패딩 함수를 직접 작성하는 것은 어렵지 않지만 이미 JavaScript에 내장되어 있는데 왜 직접 작성합니까? 이미 많은 흥미로운 기능이 내장되어 있습니다. 직접 무언가를 만들기 전에 빠르게 검색해 보는 것이 좋습니다. 🎜🎜🎜이 기사는 다음에서 복제되었습니다: https://segmentfault.com/a/1190000022812375🎜🎜🎜권장 관련 튜토리얼: 🎜JavaScript 비디오 튜토리얼🎜🎜

위 내용은 JS에서 문자열 형식을 지정하기 위해 padStart() 및 padEnd()를 사용하는 방법은 무엇입니까? (팁)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제