有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用于屏蔽字符串起始8个字符的java正则表达式

我试图用下面的JAVA代码屏蔽给定字符串的起始精确8个字符,该字符串可以包含任何字符和长度

String maskChar = "x";
String fieldName = "j@#G}3 2jklWEFSD681@#";
fieldName = fieldName.replaceAll("(?:^.{8})", maskChar);

正在给出输出xjklWEFSD681@#,该输出被替换为单个“x”
但是预期的输出应该是xxxxxxxxjklWEFSD681@#

这段代码有regex(?:^.{8}),它返回完整的&;精确的8个起始字符作为字符串, 因此,当它屏蔽时,它用单个maskChar替换返回的字符串。当字符串长度小于8个字符时,这也应该处理大小写,它应该屏蔽给定字符串的所有字符

所以问题是,如何使正则表达式以字符而不是字符串的形式返回?或者请建议使用不同的正则表达式,因为我是新手。 谢谢


共 (1) 个答案

  1. # 1 楼答案

    你可以用

    fieldName = fieldName.replaceAll("(?<=^.{0,7}).", maskChar);
    

    Java regex demo

    详细信息

    • (?<=^.{0,7})-一种正查找,与前面紧跟着零到七个字符的位置相匹配,而不是换行符
    • .-除换行符以外的任何单个字符