Код: Выделить всё
Но при работе с чем-то вроде &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")));
Я пробовал использовать Matcher.quoteReplacement и даже пытался сделать это вручную и заменить $ -> \\$, но ничего не помогло.
Примечание: заполнитель %price% необходимо заменить перед входом в функцию
Подробнее здесь: https://stackoverflow.com/questions/793 ... nce-due-to
Мобильная версия