Си диез / Говнокод #1781 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 Ordos, (Updated )

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

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

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8