JavaScript 中的前導零

Shraddha Paghdar 2023年10月12日
JavaScript 中的前導零

有時我們需要對類似於數字的字串進行排序。例如,10 按字母順序排在 2 之前,但在 02 之後。

前導零用於匹配數字的升序和字母順序。這篇文章將教授如何在 JavaScript 中附加前導零。

在 JavaScript 中將前導零附加到數字

padStart() 方法是 JavaScript 提供的內建方法。此方法用另一個字串填充或連線當前字串,直到結果字串達到指定長度。

如果有必要,它會多次附加它。填充從輸入字串的開頭應用,它返回一個指定目標長度的字串,並從開頭應用 padString

語法:

padStart(targetLength)
padStart(targetLength, padString)

String.padStart 方法接受以下 2 個引數:

  1. 達到這個長度的字串的 target length,用填充字串填充字串。還考慮小數點或減號。
  2. pad string,應用於字串開頭的子字串。

padStart 方法僅適用於字串,因此要使用 padStart 方法,首先,我們必須將數字轉換為字串。在 padStart() 的文件中查詢更多資訊。

將前導零新增到數字的步驟:

  1. 將給定數字轉換為新字串。
  2. 呼叫 JavaScript 的 padStart() 方法將零附加/連線到字串的開頭。
  3. padStart 方法返回一個新的字串,從頭開始應用指定的填充字串。
function addLeadingNumberZeros(number, totalLength) {
  return String(number).padStart(totalLength, '0');
}

console.log(addLeadingNumberZeros(4, 2));
console.log(addLeadingNumberZeros(4, 3));
console.log(addLeadingNumberZeros(4, 4));

輸出:

"04"
"004"
"0004"
const num = '00' + 8;
console.log(num);

輸出:

008

如果將填充字串轉換回數字,所有前導零都會自動刪除,因為 008 === 8。JavaScript 不會保持前導零無關緊要。

如果輸入字串長度超過指定的目標長度,則整個字串從 padStart 方法返回。如果你需要處理負數,你需要新增一個 if 語句,在新增前導零之後新增減號。

function addLeadingNumberZeros(number, totalLength) {
  if (number < 0) {
    const withoutNegativeSign = String(number).slice(1);
    return '-' + withoutNegativeSign.padStart(totalLength, '0');
  }

  return String(number).padStart(totalLength, '0');
}

console.log(addLeadingNumberZeros(3, 2));
console.log(addLeadingNumberZeros(-3, 3));

輸出:

"03"
"-003"

新增一個 if 語句以檢查是否將負數提供給函式。請注意,我們有意不在新字串的目標長度中包含減號。

為了處理負數,我們必須刪除減號,新增前導零,並將減號新增到字串的開頭。最好的替代方法和更簡單的方法是使用加法運算子 (+)。

const positiveNumber = '00' + 7;
console.log(positiveNumber);

const negativeNumber = '-' +
    '00' + String(-7).slice(1);
console.log(negativeNumber);

當我們在任何瀏覽器中執行上面的程式碼時,你將得到以下輸出。

輸出:

"007"
"-007"
Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn

相關文章 - JavaScript Number