1. Java / Говнокод #8643

    +90

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    static String Colorize(String str) {
    		str = str.replace("{BLACK}", "&0");
    		str = str.replace("{DARKBLUE}", "&1");
    		str = str.replace("{DARKGREEN}", "&2");
    		str = str.replace("{DARKTEAL}", "&3");
    		str = str.replace("{DARKRED}", "&4");
    		str = str.replace("{PURPLE}", "&5");
    		str = str.replace("{GOLD}", "&6");
    		str = str.replace("{GRAY}", "&7");
    		str = str.replace("{DARKGRAY}", "&8");
    		str = str.replace("{BLUE}", "&9");
    		str = str.replace("{BRIGHTGREEN}", "&a");
    		str = str.replace("{TEAL}", "&b");
    		str = str.replace("{RED}", "&c");
    		str = str.replace("{PINK}", "&d");
    		str = str.replace("{YELLOW}", "&e");
    		str = str.replace("{WHITE}", "&f");
    
    		str = str.replace("{0}", "&0");
    		str = str.replace("{1}", "&1");
    		str = str.replace("{2}", "&2");
    		str = str.replace("{3}", "&3");
    		str = str.replace("{4}", "&4");
    		str = str.replace("{5}", "&5");
    		str = str.replace("{6}", "&6");
    		str = str.replace("{7}", "&7");
    		str = str.replace("{8}", "&8");
    		str = str.replace("{9}", "&9");
    		str = str.replace("{A}", "&a");
    		str = str.replace("{B}", "&b");
    		str = str.replace("{C}", "&c");
    		str = str.replace("{D}", "&d");
    		str = str.replace("{E}", "&e");
    		str = str.replace("{F}", "&f");
    
    		str = str.replace("&", "\u00a7");
    		return str;
    	}

    Запостил: Crazy_penguin, 25 Ноября 2011

    Комментарии (29) RSS

    • а что это за цветомузыка?
      Ответить
    • 1) replace => replaceAll (с точки зрения алгоритма, а не языка).
      2) В первой половине - использовать TableDriven.
      3) Во второй половине - цикл.
      Ответить
      • видимо, регулярные выражения всё-таки придумали трусы
        Ответить
        • Трусы ими не пользуются.
          Ответить
          • выражения для трусов
            ударения расставьте сами
            Ответить
        • а как здесь регулярку применить?
          Ответить
          • Организовать нечто вроде этого: s/\{([A-F])\}/\\u00a7\1/g
            С буквенными кодами труднее: там в правой части нужно использовать мапу и ссылаться на \1 в качестве ключа.
            Ответить
            • >s/\{([A-F])\}/\\u00a7\1/g
              Не самодокументируемо и плохоподдерживаемо.

              >С буквенными кодами труднее
              Плохорасширяемо.

              >труднее: нужно использовать мапу и ссылаться на \1 в качестве ключа.
              Что же сразу код не написал? Думаю, там решение не короче будет.
              Ответить
              • > Не самодокументируемо и плохоподдерживаемо
                Это специфика RegExp
                > Что же сразу код не написал?
                Код писать лень. Работа с regexp в java многословна и неудобна. Но код получится более коротким и расширяемым, "я гарантирую это" (с)
                Ответить
          • Победил лень и наговнявкал пример с применением регулярных выражений. БОльшая часть кода - инициализация данных, сам код преобразования помещается в 7 строк.
            http://ideone.com/p0sba
            Ответить
            • Хороший код. Но есть в нем что-то такое, что мне не нравится.
              1. Громоздкость жабокода
              2. Pattern.CASE_INSENSITIVE

              Потому соглашусь со сказанным выше про TableDriven и цикл.
              http://govnokod.ru/8643#comment122252
              Ответить
              • CASE_INSENSITIVE (я специально его ввёл, потому что ненавижу набирать текст в верхнем регистре) можно и убрать, записать короче уже вряд ли удастся.
                Вариант, предлагаемый выше, плох тем, что в силу иммутабельности джава-строк будет создано дохрена ненужных объектов потенциально большого размера.
                Ответить
                • Но почему не (?i)
                  Ответить
                  • Разница незначительна. Не думаю, что это существенный недостаток в этом коде :)
                    Ответить
                    • Э-э. Ну это я некорректно выразился.
                      Просто стало интересно почему именно так, а не более короткий (?i).
                      Возможно на это есть незвестные мне веские причины?
                      Ответить
            • Годно.
              Ответить
            • +1
              мужик сказал - мужик сделал, мужик сделал - всем рассказал!
              Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий