Я пытаюсь скрыть все вхождения AccountNumber в моем ответе на код XML. AccountNumber имеет 16 цифр, и я хочу скрыть первые 12 цифр и сохранить последние четыре.regex для маскировки всех номеров счетов в XML до последних четырех цифр
XML ответ:
<ns2:PaymentMethod>
<CCInfo xmlns="">
<AccountType>sdaj</AccountType>
<AccountNumber>123456789</AccountNumber>
<AccountName>sdfsad</AccountName>
<ExpirationMonth>sdaf</ExpirationMonth>
<ExpirationYear>afgds</ExpirationYear>
</CCInfo>
</ns2:PaymentMethod>
<ns2:PaymentMethod>
<CCInfo xmlns="">
<AccountType>kyfkuk</AccountType>
<AccountNumber>098765432123987</AccountNumber>
<AccountName>hjvkv</AccountName>
<ExpirationMonth>gfdgh</ExpirationMonth>
<ExpirationYear>tdjk</ExpirationYear>
</CCInfo>
</ns2:PaymentMethod>
Ниже мой Java-код:
String accountNumberPatternString ="<AccountNumber>(^.{12})";
Pattern accountNumberPattern = Pattern.compile(accountNumberPatternString);
Matcher matcher = accountNumberPattern.matcher(data);
String maskedResult = matcher.replaceAll("<AccountNumber>*******");
Я ожидаю, что результат как:
<AccountNumber>************3456</AccountNumber>
, но я получаю результат как :
<AccountNumber>123456789</AccountNumber>
почему это ''^в шаблоне? –
Одним из решений было бы извлечение AN из xml. После этого вы можете использовать: String.format ("% 1 $" + AN.length() + "s", AN.subString (13,15) .replace ("", "*"); – Tom
надеюсь вы используете действительный метод для преобразования потока xml в String, чтобы не повредить данные в этом процессе. – jtahlborn