1. C# / Говнокод #2383

    +92.8

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    name[0].InnerText = Regex.Replace(name[0].InnerText, @"<[^>]+>", string.Empty);
    name[0].InnerText = Regex.Replace(name[0].InnerText, "a*[a-z]*A*[A-Z]*", string.Empty);
    name[0].InnerText = Regex.Replace(name[0].InnerText, ",", string.Empty);
    name[0].InnerText = Regex.Replace(name[0].InnerText, "\\.", string.Empty);
    name[0].InnerText = Regex.Replace(name[0].InnerText, ";", string.Empty);
    name[0].InnerText = Regex.Replace(name[0].InnerText, "&", string.Empty);
    name[0].InnerText = Regex.Replace(name[0].InnerText, "\\?", string.Empty); 
    name[0].InnerText = Regex.Replace(name[0].InnerText, "\n", string.Empty);
    name[0].InnerText = Regex.Replace(name[0].InnerText, " ", string.Empty);

    такие дела. кстати, как улучшить? :)) Нужно, чтобы обрезалось все, кроме чисел (положительных и отрицательных) Я какбе начинающий

    Запостил: Yurik, 07 Января 2010

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

    • ужос ужос
      9 компиляций регэкспов
      Ответить
    • >>кстати, как улучшить?

      кстати, постер, тебя в гугле забанили?
      Ответить
    • ^[0-9+\-] - обрежет всё, кроме чисел и знаков + -
      Правда, не уверен нужно ли экранировать -, ибо уже подзабыл..
      Ответить
      • во-первых [^0-9+\-]+
        во-вторых строка +++--+3+4+---+ явно не число
        Ответить
    • ^[+\-]?\d+$
      Ответить
    • ААА! это что-то из вуду a*[a-z]*A*[A-Z]*
      видно аффтар скопипастил где-то первую строчку (да и там косяк с жадностью) и решил лично еще немного вбросить гумнеца
      Ответить
    • выебал себе все мозги. [^\d-] работает, но до нужного числа еще дохуя левака, а ^[+\-]?\d+$ не работает вообще. В одну строчку никак не получается уместить.
      Вот такая схема работает, но она опять-таки гавно.
      name[0].InnerText = Regex.Replace(name[0].InnerText, @"<[^>]+>", string.Empty);
      name[0].InnerText = Regex.Replace(name[0].InnerText, @"[^\d-]+", string.Empty);
      Ответить
    • [quote]шибка компиляции комментария:
      CSRF Attack detected[/quote]

      /\D(?![\-\+]?\d+)|[^\-\+\d](?=[\-\+]?\d+)|[\-\+](?=[\-\+])/

      Хех :)
      Ответить
      • спасибо за говнокод :) с [^\d-]+ получаем тоже самое что и с вашим примером. Выходит строка в виде 312512122006-20. Нам нужно число -20. Причем минуса может и не быть, и оно вообще можеть быть любым (число).
        Ответить
        • ну приехали епт) тебе нужно получить последнее число вместе со знаком?

          тогда делай match:
          $_ = "aseasd42 34234sdfsd-456fsdfsdf";
          /([-+]?\d+)([^\d+-]*?)$/;
          print $1; # => -456


          зы учись правильно формулировать мысль - это не сложно, поверь ;)
          Ответить
        • Регулярка делает именно то, что написано в вопросе. Наверное действительно, лучше было сначала понять, что спрашиваете :)
          Ответить
        • это еще больше вопросов породило:
          >вообще можеть быть любым (число)

          т.е. в любой системе счисления, комплексное, вещественное, рациональная дробь ?
          Ответить
          • да нет, я имел ввиду натуральное число
            Ответить
            • Тогда ваша задача в общем случае нерешаема, либо может иметь множество решений.
              "1 2" - какой результат по вашему должен быть тут?
              Кроме того, форм записи натуральных чисел существует много, для примера: 0х1, #1, 0.1e+1 и т.п.
              Ответить
              • вообще это небольшая прога, которая показывает температуру, выдирая текущее значение из rss ленты. Я нашел другую ленту с показаниями температуры. Теперь хватает только "[^\d-]+". В итоге задача решилась другим способом. И теперь из градусов фаренгейта в градусы целсия не надо переводить :)
                Ответить
                • не лучше ли тогда было взять xml парсер?
                  или чем больше лисапедов, тем лучше?
                  Ответить
                  • Иногда нужен лисапед. Или педаль от лисапеда. Это намек.
                    Ответить
    • У меня еще одна проблема :) Получаю рсс ленту вот так
      XmlDocument xDoc = new XmlDocument();
      xDoc.Load("http://www.rssweather.com/wx/ru/perm/rss.php");

      Если пытаюсь повторить, сервер посылает на йух, говорит, что слишком часто. Хотя в браузере обновлеятся лента на ура, хоть ф5 зажми не отпуская.
      Ответить
      • Очень давно на такие грабли наступал - когда юзал в браузере XMLHTTP. Мне помнится, это решилось установкой кукисов, а именно ID сессии
        Ответить
        • Ответ через 5 месяцев :). Я по-другому решил проблему, решил использовать Yahoo! Weather API. Там все просто очень реализовано, без проблем. Вот ссылка, если интересует: http://developer.yahoo.com/weather/
          Ответить
    • -?[0-9]*(\.[0-9]+)?
      Ответить

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