javascript - 替换/屏蔽字符串中的替代 N 个字符

标签 javascript string replace mask masking

我想用“*”替换字符串中的某些字符,方法如下:

给定 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/

相关文章:

javascript - 将数字 chop 至小数点后两位而不进行四舍五入

javascript - swfaddress-optimizer.js 的文档在哪里?

string - 通过 Powershell 进行日志解析 - 打印第 n 个元素之后的所有数组元素

java - 递归地在空格中添加星号

regex - 无法通过子例程通过正则表达式替换字符串

java - 如何为导入语句创建自定义 IntelliJ 警告/错误?

asynchronous - Javascript:同步到异步转换器库

c# - 从脚本获取时 Unity3d 输入字段文本被截断?

javascript - 我有一个代表数组的字符串。如何推送保持格式的元素?

javascript - Douglas Crockford 的 Strict Mode Example 是不是错了?