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

    +2

    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
    public class RussianNumberUtils {
    
        public static String getRussianNumberFormat(String number) {
    
            StringBuilder numberBuilder = new StringBuilder();
    
            try {
                numberBuilder.append("+");
                numberBuilder.append(number.charAt(0));
                numberBuilder.append(" (");
                numberBuilder.append(number.substring(1, 4));
                numberBuilder.append(") ");
                numberBuilder.append(number.substring(4, 7));
                numberBuilder.append("-");
                numberBuilder.append(number.substring(7, 9));
                numberBuilder.append("-");
                numberBuilder.append(number.substring(9, Math.max(number.length(), 11)));
    
                return numberBuilder.toString();
            } catch (Exception e) {}
    
            return number;
        }
    }

    Форматирование русского номера телефона

    Запостил: lukaville, 19 Декабря 2017

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

    • слава Сатане хоть StringBuilder используют
      Ответить
      • В данном случае можно было и регуляркой.

        З.Ы. Не думаю, что форматирование номера будет боттлнекой даже если его сделать через плюсики.
        Ответить
        • если написать в одной строке через плюсики, компилятор сам билдером догадается склеить
          Ответить
          • А вот если ты знаешь, что компилятор догадается, значит ли это, что можно писать код, который формально оверхедный, но он короче или яснее другого? Например, забить на стрингбилдер и конкатенировать строки в цикле, а компилятор там разберется.
            Ответить
            • > конкатенировать строки в цикле
              В цикле он, скорее всего, не разберётся. Во всяком случае, раньше не мог.

              Я ничего не имею против "оверхедного" кода, который яснее, если оверхед измеряется квазиконстантой.
              Ответить
      • Вообще-то если клеить плюсами ява автоматом тот быдлер и впилит.

        Еще один камень в огород перегрузки операторов: когда неявно, люди не понимают как в программе работают элементарные вещи.
        После чего начинают писать всякие квадратичные алгоритмы им. Шлемиэля.
        PS> Недочитал, вон Роман о том же пишет.
        Ответить
    • >} catch (Exception e) {}
      Самое смешное что какое-то Appendable походу кидало IOException.
      Ответить
    • Скобками помечается необязательная часть. Т.е.
      (095)123-45-67 - москвичам набирать 123-45-67, а остальным использовать код города 095 в соответствии с местными правилами - через восьмерку или как еще.
      Код оператора сотовой связи - это обязательная часть, без нее вы попадете не туда. Поэтому нужно писать ее не в скобках:
      +7-921-723-45-67
      Ответить
      • 095?
        Как там оно, в 2004?
        Биткойны купи!
        Ответить
        • Ладно 095. Нас после 2004 ещё наказали так называемой закрытой нумерацией (вечно путаю, какая из них открытая, какая закрытая, потому что название нелогичное). «Прямые номера» потеряли всякий смысл и опсосы, предоставляющие за отдельную плату городские номера вместо федеральных, разорились, потому что теперь приходится набирать код города и внутри зоны.
          Ответить
    • не проще использовать маску?
      Ответить

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