我想用“*”替换字符串中的某些字符,方法如下:
给定 N,保持前 N 个字符不变,但用“*”屏蔽接下来的 N 个字符,然后保持接下来的 N 个字符不变,...等等,交替字符串中的每 N 个字符。
我可以用“*”屏蔽每个交替字符(N 为 1 的情况):
let str = "abcdefghijklmnopqrstuvwxyz"
for (let i =0; i<str.length; i +=2){
str = str.substring(0, i) + '*' + str.substring(i + 1);
}
console.log(str)
输出:
"*b*d*f*h*j*l*n*p*r*t*v*x*z"
但我不知道如何使用不同的 N 值执行掩码。
例子:
let string = "9876543210"
N = 1; Output: 9*7*5*3*1*
N = 2; Output: 98**54**10
N = 3; Output: 987***321*
在没有正则表达式的情况下实现此目标的最佳方法是什么?
最佳答案
您可以使用 Array.from
将每个字符映射到“*”或未更改的字符,具体取决于索引。如果索引被n
整除是奇数,则应该是“*”。最后使用 join
将该数组变回字符串:
function mask(s, n) {
return Array.from(s, (ch, i) => Math.floor(i / n) % 2 ? "*" : ch).join("");
}
let string = "9876543210";
console.log(mask(string, 1));
console.log(mask(string, 2));
console.log(mask(string, 3));
关于javascript - 替换/屏蔽字符串中的替代 N 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72953675/