Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Стартап Помощь в изучении языка Java

Знатоки регулярок спасайте. Как избавится от моей лесенки :D
.replace("§1", "").replace("§2", "").replace("§3", "").replace("§4", "").replace("§5", "").replace("§6", "").replace("§7", "").replace("§8", "").replace("§9", "").replace("§a", "").replace("§b", "").replace("§c", "").replace("§d", "").replace("§e", "").replace("§f", "").replace("§r", "").replace("§n", "").replace("§m", "").replace("§l", "").replace("§o", "").replace("§k", "")
дословно: replace("§[1-9a-fk-or]","")
чуть правильней: replace("§[0-9a-fa-fk-orA-FK-OR]","")
еще правильней: ChatColor.stripColor
 
Последнее редактирование:
Знатоки регулярок спасайте. Как избавится от моей лесенки :D
.replace("§1", "").replace("§2", "").replace("§3", "").replace("§4", "").replace("§5", "").replace("§6", "").replace("§7", "").replace("§8", "").replace("§9", "").replace("§a", "").replace("§b", "").replace("§c", "").replace("§d", "").replace("§e", "").replace("§f", "").replace("§r", "").replace("§n", "").replace("§m", "").replace("§l", "").replace("§o", "").replace("§k", "")
ChatColor.stripColor
 
Регулярные выражения можно использовать прямо в переменной? :eek::confused:

В смысле в переменной? Речь идёт о строке, а строка - это объект класса String, у которого есть методы, в т.ч. и те, что поддерживают регулярные выражения.
 
Конечно круто, еслиб это был плагин, а не отдельная прога.
Код:
private static final Pattern STRIP_COLOR_PATTERN = attern.compile("(?i)" + String.valueOf('§') + "[0-9A-FK-OR]");
public static String stripColor(final String input) {
  if (input == null) {
  return null;
  }
  return STRIP_COLOR_PATTERN.matcher(input).replaceAll("");
}
 
Знатоки регулярок спасайте. Как избавится от моей лесенки :D
.replace("§1", "").replace("§2", "").replace("§3", "").replace("§4", "").replace("§5", "").replace("§6", "").replace("§7", "").replace("§8", "").replace("§9", "").replace("§a", "").replace("§b", "").replace("§c", "").replace("§d", "").replace("§e", "").replace("§f", "").replace("§r", "").replace("§n", "").replace("§m", "").replace("§l", "").replace("§o", "").replace("§k", "")
Пока ничего, кроме:
string[] a;
a = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "0", "a", "b", "c", "d", "e", "f", "r", "n", "m", "l", "o", "k"};
for(int repl : a){
.replace("§" + a, "");
}
В голову не лезет.
Можно сделать в виде метода/функции.
 
@The_King, класс ChatColor имеет метод:
Java:
public static translateAlternateColorCodes(
   char   altColorChar,
   String textToTranslate);
Соответственно,
Java:
a = ChatColor.translateAlternateColorCodes("&", a);
 
Последнее редактирование:
Здравствуйте посоветуйте книгу для начинающих по Java, а точнее тем кто вообще не сталкивался ни с каким языком программирования?Буду благодарен за помощь нубу:oops:
 
Здравствуйте посоветуйте книгу для начинающих по Java, а точнее тем кто вообще не сталкивался ни с каким языком программирования?Буду благодарен за помощь нубу:oops:
Прочитай первый пост темы.
 
Понемногу изучаю джава и нужна небольшая помощь. Решил начать с самого простого, кажется. Пишу плаг на чат (цвета, приставки, интеграция с vault) и столкнулся с мелкой проблемой. надо убрать из текста сообщения два первых знаки, потому что когда пишу сообщения такого типа "&0Текст сообщение" то вместе с сообщением отправляются коды цвета &0. Как удалить первые два знака из сообщения?
Java:
   @EventHandler
   public void onPlayerChat(AsyncPlayerChatEvent event) {

    Player player = event.getPlayer();
    String message = event.getMessage();

       if(event.getMessage().contains("&0") && player.hasPermission("colorchat.use.black")) {
            event.setFormat(chat.getPlayerPrefix(player) + player.getName() + chat.getPlayerSuffix(player) + ChatColor.BLACK + message);
       } else {
               event.setFormat(chat.getPlayerPrefix(player) + player.getName() + chat.getPlayerSuffix(player) + message);
       }
   }
}
 
Понемногу изучаю джава и нужна небольшая помощь. Решил начать с самого простого, кажется. Пишу плаг на чат (цвета, приставки, интеграция с vault) и столкнулся с мелкой проблемой. надо убрать из текста сообщения два первых знаки, потому что когда пишу сообщения такого типа "&0Текст сообщение" то вместе с сообщением отправляются коды цвета &0. Как удалить первые два знака из сообщения?
Можно двумя способами:
1.
Java:
   @EventHandler
   public void onPlayerChat(AsyncPlayerChatEvent event) {

    Player player = event.getPlayer();
    String message = event.getMessage();

       if(event.getMessage().contains("&0") && player.hasPermission("colorchat.use.black")) {
            event.setFormat(chat.getPlayerPrefix(player) + player.getName() + chat.getPlayerSuffix(player) + message.replaceall("&0","§0"));// Если тебе только черный изменить нужно
       } else {
               event.setFormat(chat.getPlayerPrefix(player) + player.getName() + chat.getPlayerSuffix(player) + message);
       }
   }
}
2.
Java:
   @EventHandler
   public void onPlayerChat(AsyncPlayerChatEvent event) {

    Player player = event.getPlayer();
    String message = event.getMessage();

       if(event.getMessage().contains("&0") && player.hasPermission("colorchat.use.black")) {
            event.setFormat(chat.getPlayerPrefix(player) + player.getName() + chat.getPlayerSuffix(player) + message.replaceall("&0","§0"));
       } else {
               event.setFormat(chat.getPlayerPrefix(player) + player.getName() + chat.getPlayerSuffix(player)+ChatColor.BLACK + message.replaceall("&0",""));
       }
   }
}
Геморройно все коды так прописывать.
И ещё очень полезная вещь. Можно юзать § вместо ChatColor прямо внутри "".
Вот пример: (ChatColor.RED + "Куку") и ("§4Куку")
Цветовые коды(ссылка на excel)
Что-бы поставить знак параграфа нужно нажать сочетание клавиш ALT + 21 . 21 на циферках слева(numpad)
 
Последнее редактирование:

Поделиться этой страницей

Назад
Верх