Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
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)
тут все неправильно.
1. Функция, судя по названию, не должна возвращать стринг
1.а. Это, кстати, избавит от такой ерунды как
return "";
Если не можешь распарсить - кидай эксепшен.
Если эксепшен слишком дорог - сделай функцию bool TryGetDollarKurs(...)
2. Текст курса можно выдернуть регэкспом. Так что операции над строками вообще не нужны. Можно только трим заюзать на всякий случай.
3. Если есть веб сервис, то лучше пользоваться им.
4. Строку регэкспа лучше вынести во внешний соурс - менять код при изменениях чужой разметки - не гуд.
На самом деле та две аналогичные функции, только для разных разметок на cbr.ru, и ещё две такие же для евро.
Смысл примерно такой: если GetDollarKurs вернёт пустую строку, то попробуй использовать GetDollarKurs2, а потом что получилось уже конвертировать. :о)
1. Функция, судя по названию, не должна возвращать стринг
1.а. Это, кстати, избавит от такой ерунды как
return "";
Если не можешь распарсить - кидай эксепшен.
Если эксепшен слишком дорог - сделай функцию bool TryGetDollarKurs(...)
2. Текст курса можно выдернуть регэкспом. Так что операции над строками вообще не нужны. Можно только трим заюзать на всякий случай.
3. Если есть веб сервис, то лучше пользоваться им.
4. Строку регэкспа лучше вынести во внешний соурс - менять код при изменениях чужой разметки - не гуд.
Смысл примерно такой: если GetDollarKurs вернёт пустую строку, то попробуй использовать GetDollarKurs2, а потом что получилось уже конвертировать. :о)
А то с кэшем как-то негормонично получилось бы.
Что может быть тошнотворнее транслита?
Смесь транслита и перевода!
OgHr
YZzZnGprwNbQebeHZeMPjUwnAWJCfwhssRLDKNabMrWHgAzDzDhOjlkD
kQumbFbNHAMhpeFOBjzsWTzxK