我需要解析一个字符串并屏蔽所有的社会保障代码。SSN总是精确的9位数字。为了我的目的,如果我看到一个9位数字的子字符串,我可以假设它是一个SSN,或者至少假设它是安全的掩码。但是,我不想掩盖任何小于或大于9位数字的数字子字符串。
所以,这段代码让我接近了,但它找到了10位数字字符串,并屏蔽了前9位数字。
String masked = myString.replaceAll( "\\d{9}", "XXXXXXXXX" );cat123456789dogcatXXXXXXXXXdogcat1234567890dogcatXXXXXXXXX0dogcat1234567890dog是否可以使用字符串replaceAll方法,或者使用另一种方法来实现我想要的?
发布于 2014-12-09 14:24:00
您可以使用“查找四周”来确保它的长度为9
(?<!\\d)\\d{9}(?!\\d)(?<!\\d)负向后看。确保长度9的数字不被数字按下。(?!\\d)负面展望未来。确保数字后面也没有数字。或
使用caputre组作为
String masked = myString.replaceAll( "(\\D)\\d{9}(\\D)", "$1XXXXXXXXX$2" );https://stackoverflow.com/questions/27381169
复制相似问题