Получение нелегальной ссылки на группу из-за $JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Получение нелегальной ссылки на группу из-за $

Сообщение Anonymous »

У меня есть функция, которая должна заменять простые комбинации (например: &a &a &b &c) на что-то, что интерпретатор чата может понять и проанализировать ( и т. д.)
Но при работе с чем-то вроде &a$&e%price% я получаю сообщение об ошибке ссылки на недопустимую группу
Сначала я занимаюсь заменой цены!
Вот мой код:

Код: Выделить всё

public class Chat {

private static final Pattern PATTERN = Pattern.compile("([^\\\\]?)&([0-9a-fk-r])");

private static final Map COLOR_CODES = new HashMap() {{
put("0", "");
put("1", "");
put("2", "");
put("3", "");
put("4", "");
put("5", "");
put("6", "");
put("7", "");
put("8", "");
put("9", "");
put("a", "");
put("b", "");
put("c", "");
put("d", "");
put("e", "");
put("f", "");
put("k", "");
put("l", "");
put("m", "");
put("n", "");
put("o", "");
put("r", "");
}};

public static Component translate(String text) {
// Then apply color codes
return Colors.interprate(replaceprimitive(text.replaceAll(String.valueOf(LegacyComponentSerializer.SECTION_CHAR), "&")));
}

private static String replaceprimitive(String string) {
return PATTERN.matcher(string).replaceAll(matchResult -> matchResult.group(1) + COLOR_CODES.get(matchResult.group(2)));
}
}
и вот как я это называю:

Код: Выделить всё

        sender.send(Chat.translate("&c$&e%test%".replaceAll("%test%", "100")));
Обратите внимание, что эта проблема не возникает, если между $ и числом нет простых кодов: пример &c$%test%" не вызывает никаких проблем, но $ &l%test%` делает
Я пробовал использовать Matcher.quoteReplacement и даже пытался сделать это вручную и заменить $ -> \\$, но ничего не помогло.
Примечание: заполнитель %price% необходимо заменить перед входом в функцию

Подробнее здесь: https://stackoverflow.com/questions/793 ... nce-due-to
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»