首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用星号(*)替换字符(前两个字符除外)

如何用星号(*)替换字符(前两个字符除外)
EN

Stack Overflow用户
提问于 2021-03-02 07:14:50
回答 2查看 1.9K关注 0票数 0

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

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

我想要什么:Lo*Ip*是si**du*.

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

演示: 这里

如果你对我应该做什么和分享有什么想法,我会很感激的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-02 07:22:56

你可以这样做

代码语言:javascript
复制
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(" "));

输出是

代码语言:javascript
复制
Lo*** Ip*** is si**** du*** te** of th* pr****** an* ty********* in*******

将字符串拆分成单词,然后将每个单词映射到隐藏版本的顶部,然后重新连接。要绘制地图,只需返回任意一个或两个字母长度的单词,对于其他字符,取前两个字符的子字符串,然后用星号填充其余的字符。

如果您希望能够从多个地方调用它,并且避免重新定义它,您也可以将所有内容封装在一个函数中。

代码语言:javascript
复制
function hideWords(s) {
    return s.split(" ").map(hideWord).join(" ");
}

console.log(hideWords(s));
票数 3
EN

Stack Overflow用户

发布于 2021-03-02 07:50:07

我会用regex查找后断言

代码语言:javascript
复制
const text = 'Lorem Ipsum is simply dummy text of the printing & typesetting industry';
const result = text.replaceAll(/(?<=\w{2,})\w/g, '*');
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66434851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档