行业资讯 2025年08月6日
0 收藏 0 点赞 723 浏览 1865 个字
摘要 :

文章目录 1. 使用正则表达式 2. 将最后 4 个字符附加到自定义屏蔽字符串 三、结论 学习使用掩码字符来掩码字符串或数字,除非在末尾显示最后 4 个字符。这种屏蔽通常出……




  • 1. 使用正则表达式
  • 2. 将最后 4 个字符附加到自定义屏蔽字符串
  • 三、结论

学习使用掩码字符来掩码字符串或数字,除非在末尾显示最后 4 个字符。这种屏蔽通常出现在金融应用程序中,我们希望屏蔽帐号或 SSN 以避免显示 NPI(非公开个人信息)数据。

如果我们需要屏蔽日志文件中的数据,请考虑使用logback 中内置的屏蔽功能。

1. 使用正则表达式

屏蔽字符串(最后 N 位数字除外)的最简单解决方案是使用正则表达式和String.replaceAll()函数。ReplaceAll ()函数用给定的替换字符串替换每个匹配的子字符串。

在以下代码中,正则表达式匹配字符串中除最后 4 个字符之外的每个字符。我们可以将此正则表达式应用于任意数量的字符。注意,如果字符串长度小于4,则原字符串保持不变。

public static String maskString(String input) {

  if(input == null) {
    return \"NULL\";
  }
  return input.replaceAll(\".(?=.{4})\", \"x\");
}

让我们测试一下上面的函数。

Assertions.assertEquals(\"xxxxx6789\", maskString(\"123456789\"));
Assertions.assertEquals(\"6789\", maskString(\"6789\"));
Assertions.assertEquals(\"789\", maskString(\"789\"));
Assertions.assertEquals(\"\", maskString(\"\")); //empty string
Assertions.assertEquals(\"NULL\", maskString(null)); //null

如果我们想屏蔽格式化字符串,我们可以相应地调整正则表达式。例如,以下函数将仅转换格式化字符串中除最后 4 个字符之外的字母数字字符。因此,如果字符串是格式化的帐号或 SSN,它会跳过格式化字符串中的连字符

public static String maskString(String input) {

  if(input == null) {
    return \"NULL\";
  }
  return input.replaceAll(\"[^-](?=.{4})\", \"x\");
}

让我们也测试一下格式化字符串的上述函数。

Assertions.assertEquals(\"xxx-xxx-7890\", maskString(\"123-456-7890\"));
Assertions.assertEquals(\"xxxxx6789\", maskString(\"123456789\"));

2. 将最后 4 个字符附加到自定义屏蔽字符串

在此方法中,我们可以自由创建仅包含任何格式的掩码字符的自定义掩码字符串。随后,我们将输入字符串的最后 4 个字符附加到掩码字符串中。

在下面的示例中,我们使用String.repeat()方法通过重复指定的次数来创建字符串。然后我们附加输入字符串的最后 4 个字符。

public static String maskString(String input) {
  if(input == null) {
    return \"NULL\";
  }
  int maskLength = input.length() - 4;
  if (maskLength <= 0)
    return input; //string less than 4 chars

  return \"x\".repeat(maskLength) + input.substring(maskLength);
}

让我们测试一下上面的函数。

Assertions.assertEquals(\"xxxxx6789\", maskString(\"123456789\"));
Assertions.assertEquals(\"789\", maskString(\"789\"));
Assertions.assertEquals(\"\", maskString(\"\")); //empty string
Assertions.assertEquals(\"NULL\", maskString(null)); //null

请注意,对于格式化字符串,我们必须根据要求创建自定义格式化掩码字符串。

三、结论

在本 Java 字符串教程中,我们学习了使用指定的掩码字符来掩码给定的字符串(输入字符串的最后 4 个字符除外)。我们学习了使用正则表达式和创建自定义掩码来掩码字符串。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9205.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号