javascript - 如何用星号 (*) 替换除前两个字符之外的字符
问题描述
我想用星号 (*) 屏蔽从 API 返回的数据。例如,如果要从 API 返回地址,我只希望前 2 个字母可见。
示例:Lorem Ipsum 只是印刷和排版行业的虚拟文本。
我想要的是:Lo*** Ip*** is si**** du*** .....
我创建了一个示例 API,但我不知道如何找到解决方案。我以为我可以通过替换将文本转换为星号,但我不知道如何使前 2 个字母出现。
演示:这里
如果您对我应该做什么有任何想法并分享它,我将不胜感激。
解决方案
你可以这样做
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));
推荐阅读
- c# - 在 C# 中使用 Deedle 添加两列
- amazon-web-services - 将源文件夹中的文件移动到目标文件夹而不删除源文件夹
- c# - 如何使用 WCF Web API 通过 Stream 将各种类型 (jpg/png/gif) 的图像上传到服务器
- python - 如何使用自定义 python 环境创建 IPython/Jupyter 内核
- angular - 来自 Wordpress Rest API 的 Ionic + Angular 格式化日期
- c++ - 为什么 new int[n] 似乎没有为 n 个 int 分配内存?
- reactjs - 当我使用上下文时,我应该在哪里以及如何使用重定向
- datagrid - 如何在基本 js | Apache Royale 上的 DataGrid 上设置列 100% 宽度
- android - 从 Firebase 存储中检索图像并在回收站视图中显示
- java - 为了过滤时间,我可以在 firebase 实时数据库中做什么?