首页 > 解决方案 > 如何用星号 (*) 替换除前两个字符之外的字符

问题描述

我想用星号 (*) 屏蔽从 API 返回的数据。例如,如果要从 API 返回地址,我只希望前 2 个字母可见。

示例:Lorem Ipsum 只是印刷和排版行业的虚拟文本。

我想要的是:Lo*** Ip*** is si**** du*** .....

我创建了一个示例 API,但我不知道如何找到解决方案。我以为我可以通过替换将文本转换为星号,但我不知道如何使前 2 个字母出现。

演示:这里

如果您对我应该做什么有任何想法并分享它,我将不胜感激。

标签: javascriptreactjs

解决方案


你可以这样做

const s = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.";

function hideWord(w) {
    if (w.length < 3) return w;
    return w.substring(0, 2) + '*'.repeat(w.length-2);
}

console.log(s.split(" ").map(hideWord).join(" "));

输出是

Lo*** Ip*** is si**** du*** te** of th* pr****** an* ty********* in*******

将字符串拆分为单词,然后将每个单词映射到其隐藏版本并重新加入。要映射它,只需按原样返回任何 1 或 2 个字母长度的单词,而对于其他单词,则取前两个字符的子字符串,其余部分用星号填充。

如果您希望能够从多个位置调用它并避免重新定义它,您也可以将整个函数包装在一个函数中。

function hideWords(s) {
    return s.split(" ").map(hideWord).join(" ");
}

console.log(hideWords(s));

推荐阅读