1. JavaScript / Говнокод #2704

    +166.8

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    function  trim(text) {
      if (text.length == 0) {
        return text;
      }
      if (text.charAt(0) == ' ') {
        return '';
      }
      if (text.charAt(text.length-1) == ' ') {
        text = text.substring(0, text.length-1);
      }
      return text;
    }

    суровый китайский trim...

    Запостил: ClintEastwood, 02 Марта 2010

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

    • Не просто китайский, а ещё и криво работающий. Мде...
      Ответить
    • Он был бы суров, если бы был рекурсивен.
      Ответить
      • function trim(text)
        {
          if (text.charAt(0) == " ")
          {
            return trim(text.substr(1));
          }
          
          if (text.charAt(text.length - 1) == " ")
          {
            return trim(text.substr(0, text.length - 1));
          }
          
          return text;
        }

        Рекурсивно, но не китай.
        Ответить
        • Кошерно было бы сделать проверку на undefined.

          К тому же могут возникнуть проблемы на пустой строке ("").

          т.е. добавить проверку:
          if (text == undefined || text.length == 0)
          {
          return text; //можно по желанию return "";
          }
          Ответить
          • Да, не сообразил как-то.
            Ответить
          • давайте развернем вашу проверку:
            if (text == undefined ) return undefined;
            if( text == "") return "";
            return text;

            вот теперь проблем не будет точно ))
            Ответить
    • А может он вызывается в бесконечном цикле до тех пор пока что вернулось не равно тому что ушло в функцию.
      Ответить
    • if (text.charAt(0) == ' ') {
      return '';
      }

      Это типа отрубить голову до мозолей на пятках?
      Ответить
      • Потому и криво работающий, что при наличии начального пробела глушится под корень вся строка. А ещё концевой пробел удаляется только один.
        Ответить
        • Ничего, скоро автор узнает что кроме "чистых" пробелов еще много чего надо отрезать.... и допишет наверное ещё строк 20))
          Ответить
    • return text.replace(/^\s+|\s+$/g, "")
      Ответить
      • Неправильно. А текстовое поле?
        Ответить
        • сорри, все правильно, под рукой проверялки не было. Сам написал практически то же самое)))
          Странно этот ресурс на мозги влияет.
          Ответить
      • return text.replace(/^\s*/, '').replace(/\s*$/, '');
        Ответить
        • или в один проход
          return text.replace(/^\s*|\s*$/g, "");
          Ответить
          • или набор велосипедов (аж 13 штук) с бенчмарком
            http://blog.stevenlevithan.com/archives/faster-trim-javascript
            Ответить

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