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

    +135.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
    public string GetDollarKurs(string input)
    {
        string dol = "[.\\s]*<img height=\"11\" alt=\"Доллар США\" hspace=\"2\" src=\"/images/icon_dollar.gif\" width=\"11\" align=\"left\" vspace=\"2\" border=\"0\">Доллар \r\n\t\t\tСША</td>\r\n\t\t<td></td>\r\n\t\t<td class=\"digit\" align=\"right\">[\\s]*\\d+\\,\\d+[.\\s]*";
        MatchCollection Matches = Regex.Matches(input, dol);
        if (Matches.Count == 1)
        {
            string res = Matches[0].Value;
            res = res.Trim();
            res = res.Substring(res.LastIndexOf('>') + 1);
            return res;
        }
        else
            return "";
    }

    Функция для получения курса доллара, в input подаётся хтмл главной страницы сайта cbr.ru и парсится.
    А web-сервисы пусть кто-нибудь другой изучает... :o)

    Запостил: Ordos, 06 Сентября 2009

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

    • А там есть веб-сервис на cbr.ru?
      Ответить
    • да и написана ужасно .() про стринг билдер явно забыли .(
      Ответить
      • тут все неправильно.
        1. Функция, судя по названию, не должна возвращать стринг
        1.а. Это, кстати, избавит от такой ерунды как
        return "";
        Если не можешь распарсить - кидай эксепшен.
        Если эксепшен слишком дорог - сделай функцию bool TryGetDollarKurs(...)
        2. Текст курса можно выдернуть регэкспом. Так что операции над строками вообще не нужны. Можно только трим заюзать на всякий случай.
        3. Если есть веб сервис, то лучше пользоваться им.
        4. Строку регэкспа лучше вынести во внешний соурс - менять код при изменениях чужой разметки - не гуд.
        Ответить
        • На самом деле та две аналогичные функции, только для разных разметок на cbr.ru, и ещё две такие же для евро.
          Смысл примерно такой: если GetDollarKurs вернёт пустую строку, то попробуй использовать GetDollarKurs2, а потом что получилось уже конвертировать. :о)
          Ответить
          • Надеюсь, все это работает без кэша :)
            А то с кэшем как-то негормонично получилось бы.
            Ответить
            • Это так раз в сутки валюта на сайте обновляется :о)
              Ответить
    • Может код писался , когда их не было ?
      Ответить
    • Я уже этими сервисами пользуюсь года 2. Несколько неудобно... написал и забыл
      Ответить
    • > GetDollarKurs
      Что может быть тошнотворнее транслита?
      Смесь транслита и перевода!
      Ответить
      • А как мне приятно видеть в БД таблицу "Otzivi" (Отзывы) :о)
        Ответить
    • А разве после этого "[.\\s]*" не нужен знак "?" ?
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить

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