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? Ты... возможно, захочешь изменить это сейчас.
Комментариев нет:
Отправить комментарий