JavaScript 如何格式化许可证密钥
给定一个字符串,任务是将字符串格式化为许可证密钥。
规则:
- 输入字符串包含字母、数字和连字符
- 输入字符串使用N个连字符分隔为N+1个组
- 输出字符串必须使用连字符每K个字符分组
- 第一组可以少于K个字符,但不能为零
- 输出字符串不能包含任何小写字符
您已经给定了输入字符串 str 和数字 K
示例:
Input : str = "dsf354g4dsg1"
k = 4
Output : "DSF3-54G4-DSG1"
Input : str = "d-sf354g4ds-g1dsfgdf-sfd5ds65-46"
k = 6
Output : "D-SF354G-40DSGS-FGFSFD-DS6546"
Input : str = " d-sf354';.;.';.'...,k/]gcs-hsfgdf-sfs6-46"
Output : k = 5
Output : "DS-F354K-GCSHS-FGDFS-FS646"
为了解决这个问题,我们采用以下步骤:
- 创建一个接受两个参数 str 和 k 的函数。
- 使用 String.trim() 方法去掉前导和末尾的空格。
- 使用 String.replace() 方法和使用正则表达式 /[^a-zA-Z0-9]/g 替换所有特殊字符。
- 使用 String.toUpperCase() 方法将字符串字符转换为大写。
- 使用 String.split() 方法将字符串转换为数组。现在,str是一个数组,其中所有元素都是大写字母和数字(以字符串形式)。
- 使用for循环,并以str的长度初始化循环,直到 i 大于0,并且在每次迭代之后, i 的值减少 k 。基本上,我们希望从str的后面开始循环。
- 现在在每次迭代中,使用短线“-”将字符串连接起来。
- 现在使用 Array.join() 方法将str转换为字符串,并从函数返回该字符串。
<script>
function format(str, k) {
str = str
// Remove the white spaces
.trim()
// Replace all the special
// characters with ""
.replace(/[^a-zA-Z0-9]/g, "")
// Transform the string into
// uppercase characters
.toUpperCase()
// Convert the string into array
.split("");
// Store the length of the
// array into len
let len = str.length;
for (let i = len; i > 0; i = i - k) {
if (i != len) {
// Concatenate the string with "-"
str[i - 1] = str[i - 1] + "-";
}
}
// Join the array to make it a string
return str.join("");
}
console.log(format("dsf354g4dsg1", 4))
console.log(format(
"d-sf354g40ds-gsfgf-sfdds65-46", 6))
console.log(format(
" d-sf354';.;.';.'...,k/]gcs-hsfgdf-sfs6-46", 5))
</script>
输出:
"DSF3-54G4-DSG1"
"D-SF354G-40DSGS-FGFSFD-DS6546"
"DS-F354K-GCSHS-FGDFS-FS646"
极客教程