JavaScript 中的前导零
有时我们需要对类似于数字的字符串进行排序。例如,10 按字母顺序排在 2 之前,但在 02 之后。
前导零用于匹配数字的升序和字母顺序。这篇文章将教授如何在 JavaScript 中附加前导零。
在 JavaScript 中将前导零附加到数字
padStart()
方法是 JavaScript 提供的内置方法。此方法用另一个字符串填充或连接当前字符串,直到结果字符串达到指定长度。
如果有必要,它会多次附加它。填充从输入字符串的开头应用,它返回一个指定目标长度的字符串,并从开头应用 padString
。
语法:
padStart(targetLength)
padStart(targetLength, padString)
String.padStart
方法接受以下 2 个参数:
- 达到这个长度的字符串的
target length
,用填充字符串填充字符串。还考虑小数点或减号。 pad string
,应用于字符串开头的子字符串。
padStart
方法仅适用于字符串,因此要使用 padStart
方法,首先,我们必须将数字转换为字符串。在 padStart()
的文档中查找更多信息。
将前导零添加到数字的步骤:
- 将给定数字转换为新字符串。
- 调用 JavaScript 的
padStart()
方法将零附加/连接到字符串的开头。 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 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