Javascript 如何将字符替换为星号(*),前两个字符除外

Javascript 如何将字符替换为星号(*),前两个字符除外,javascript,reactjs,Javascript,Reactjs,我想用星号(*)屏蔽从API返回的数据。例如,如果要从API返回地址,我只希望前两个字母可见 示例:Lorem Ipsum只是印刷和排版行业的虚拟文本 我想要的是::Lo***Ip***是si****du*** 我创建了一个示例API,但我不知道如何找到解决方案。我想我可以用replace将文本转换为星号,但我不知道如何显示前两个字母 演示: 如果您对我应该做什么有任何想法并与我分享,我将不胜感激。您可以这样做 const s = "Lorem Ipsum is simply dumm

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

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

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

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

演示:


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

您可以这样做

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(" "));
将字符串拆分为单词,然后将每个单词映射到其隐藏版本的顶部并重新连接。要映射它,只需按原样返回任何1或2个字母长度的单词,对于其他单词,使用前两个字符的子字符串,并用星号填充其余的字符

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

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

console.log(hideWords(s));
我会用

const text='Lorem Ipsum只是印刷排版行业的虚拟文本';

const result=text.replaceAll(/(?非常感谢!!我如何编辑此函数以便它可以在任何地方使用,你有什么想法吗?连续拆分等以获得单独的姓名、姓氏和地址数据。添加会不会很麻烦?可能只需将其全部打包到另一个函数中。如果我理解正确,则有{item.address}3个不同组件(a.js、b.js、c.js)中的信息。我可以为它们中的每一个创建一个函数,并将其拆分、联接、映射到数据中。我认为如果我添加这些函数,这将是错误的。我正在寻找有关此问题的解决方案。如何将此函数转换为helper并在任何位置调用它?这实际上是一个确切的问题。编辑是否有帮助?是的!感谢您的帮助:)
function hideWords(s) {
    return s.split(" ").map(hideWord).join(" ");
}

console.log(hideWords(s));
const text = 'Lorem Ipsum is simply dummy text of the printing & typesetting industry';
const result = text.replaceAll(/(?<=\w{2,})\w/g, '*');