【问题标题】:How to convert 123456789 to 123***789 in typescript/ javascript?如何在 typescript/javascript 中将 123456789 转换为 123***789?
【发布时间】:2021-04-24 10:33:21
【问题描述】:

是否有任何方法或功能能够转换这种情况?我的项目需要以这种格式显示用户ID,前3个int/string和后3个int/string应该能够显示数字,而中间部分应该用*散列。

【问题讨论】:

  • 这可以通过内置的子字符串函数来完成;那里有一些用于屏蔽文本的库,也可以提供帮助。你能告诉我们你的代码尝试吗?
  • 如果“userid”是6个字符,你会怎么做?

标签: javascript typescript


【解决方案1】:

尝试这个简单的解决方案,只需将文本分成三组,首先是中间,最后转换中间

const convertText = (text) => {
  const firstSet = text.slice(0, 3);
  const lastSet = text.slice(text.length - 3, text.length);
  const middleSet = text.slice(3, text.length - 3);
  var starSet = "";
  for (var i = 0; i < middleSet.length; i++) {
    starSet = starSet.concat("*");
  }
  const convertedText = firstSet.concat(starSet, lastSet);
  return convertedText;
};

【讨论】:

    【解决方案2】:

    由于 JS 字符串是不可变的,你只能通过构建一个新的字符串来实现。最简单的方法之一是将字符串拆分为单个字符并将它们插入到数组中,因为数组是可变的。您可以使用Array.from 执行此操作。

    然后您可以修改单个字符。在您的情况下,由于您想更改一系列值以使它们都是相同的值,您可以使用 Array.fill 它将用一个值填充数组的一个子部分。

    现在您已经更改了值,您只需将它们重新组合成一个字符串,您可以使用 Array.join 来完成。

    let hideMiddle = (str) => Array.from(str).fill("*", 3, -3).join("");
    

    【讨论】:

      猜你喜欢
      • 2015-04-21
      • 2021-10-27
      • 2016-11-18
      • 1970-01-01
      • 2023-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多