如何在 typescript/javascript 中将 123456789 转换为 123***789?

Posted

技术标签:

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

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

【问题讨论】:

这可以通过内置的子字符串函数来完成;那里有一些用于屏蔽文本的库,也可以提供帮助。你能告诉我们你的代码尝试吗? 也许试试这个? ***.com/questions/1431094/… 如果“userid”是6个字符,你会怎么做? 【参考方案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("");

【讨论】:

以上是关于如何在 typescript/javascript 中将 123456789 转换为 123***789?的主要内容,如果未能解决你的问题,请参考以下文章

如何在TypeScript/JavaScript项目里引入MD5校验和

如何在 typescript/javascript 导出中使用字符串模板来处理 graphql-codegen 架构

TypeScript / JavaScript - 导入所有类型

TypeScript -- JavaScript的救赎

在构造函数之前调用 Typescript/javascript 方法

在 typescript/javascript 的 google.maps.Geocoder().geocode() 上使用全局变量