замените строку на другую в java, используя регулярное выражение - PullRequest
1 голос
/ 22 апреля 2020

В Java я должен обернуть строковое значение в другое, используя RegEx и функцию replace.

Пример # 1: Что заменит "123C5" (5 символов) на "***** "?

Пример # 2: Что заменит" 12354CF5214 "(11 символов) на" *******5214 "? заменить только первые 7 символов

В настоящее время я использую эту функцию, но мне нужно ее оптимизировать:

public  String getMaskedValue(String value) {

    String maskedRes = "";
    if (value!=null && !value.isEmpty()) {
        maskedRes = value.trim();
        if (maskedRes.length() <= 5) {
            return maskedRes.replaceAll(value, "$1*");
        } else if (value.length() == 11) {
            return maskedRes.replace(value.substring(0, 7), "$1*");
        }
    }
    return maskedRes;
}

Может кто-нибудь помочь мне, пожалуйста? спасибо за продвинутый

1 Ответ

2 голосов
/ 22 апреля 2020

Вы можете использовать решение с ограниченной шириной , например

public static String getMaskedValue(String value) {
    return value.replaceAll("(?<=^.{0,6}).", "*");
}

См. Java демонстрацию онлайн .

The * Шаблон 1010 * соответствует любому символу (кроме символа разрыва строки, с .), которому предшествует от 0 до 6 символов в начале строки.

Примечание об использовании lookbehinds в Java regexps:

✽ Java принимает квантификаторы в пределах lookbehind, пока длина совпадающих строк попадает в заранее определенный диапазон. Например, (?<=cats?) действителен, потому что он может соответствовать только строкам из трех или четырех символов. Аналогично, (?<=A{1,10}) действителен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...