-4

这是一个帐号 77787845456464645656547877

accountNumber1.replaceAll( "(desc>||desc\s*[:]{2}\s*?|)(\d(?=\d{4}))", "$1XXXXXXXXXX$2") 这不是工作,我尝试了不同的方法没有结果。请检查,谢谢

4

2 回答 2

2

没有正则表达式的方法:

char[] cs = accountNum.toCharArray();
Arrays.fill(cs, 0, cs.length-4, '*');
String masked = new String(cs);
于 2018-05-21T23:21:38.417 回答
1

一种方法是用 替换每个数字*,前提是它后面跟着四个或更多其他数字。用正向查找做最后一部分,比如

myString.replaceAll("\\d(?=\\d{4})", "*");

它返回myString除最后四位以外的每个数字都替换为*.

于 2018-05-21T23:13:35.083 回答