GOOGLE ADS

среда, 27 апреля 2022 г.

Исключение в потоке "основной" java.lang.IndexOutOfBoundsException: нет группы 4 String replaceAll()

public static void main(String[] args) {
String a = "ABC KK {PASSWORD}";
String b = "Pass$491";
String x = a.replaceAll("\\{PASSWORD}", b);
System.out.println("======" + x);
}

Исключение в потоке «основной» java.lang.IndexOutOfBoundsException: нет группы 4 в java.base/java.util.regex.Matcher.start(Matcher.java:482) в java.base/java.util.regex.Matcher.appendExpandedReplacement (Matcher.java:1090) в java.base/java.util.regex.Matcher.appendReplacement(Matcher.java:997) в java.base/java.util.regex.Matcher.replaceAll(Matcher.java:1181) в java.base/java.lang.String.replaceAll(String.java:2939)


Решение проблемы

replaceAllэто неправильное название. replaceи replaceAll оба заменяют все экземпляры того, что вы ищете. Однако replaceAllобрабатывает свой первый аргумент как регулярное выражение, а второй — как строку замены регулярного выражения. В то время как replaceпросто обрабатывает оба аргумента как простые строки.

Таким образом, чтобы исправить это, либо избегайте этого $4, что является регулярным выражением для «заменить его 4-й соответствующей группой», либо, что более вероятно, используйте замену:

a.replace("{PASSWORD}", b);

Вы только что вставили пароль в вопросе stackoverflow? Ты... возможно, захочешь изменить это сейчас.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...