- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 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)
Oleg_quadro 06.09.2009 21:37 # 0
Ordos 06.09.2009 22:19 # 0
guest 06.09.2009 22:56 # +1
shapigor 07.09.2009 10:44 # +1
1. Функция, судя по названию, не должна возвращать стринг
1.а. Это, кстати, избавит от такой ерунды как
return "";
Если не можешь распарсить - кидай эксепшен.
Если эксепшен слишком дорог - сделай функцию bool TryGetDollarKurs(...)
2. Текст курса можно выдернуть регэкспом. Так что операции над строками вообще не нужны. Можно только трим заюзать на всякий случай.
3. Если есть веб сервис, то лучше пользоваться им.
4. Строку регэкспа лучше вынести во внешний соурс - менять код при изменениях чужой разметки - не гуд.
Ordos 07.09.2009 13:52 # 0
Смысл примерно такой: если GetDollarKurs вернёт пустую строку, то попробуй использовать GetDollarKurs2, а потом что получилось уже конвертировать. :о)
shapigor 09.09.2009 00:10 # 0
А то с кэшем как-то негормонично получилось бы.
Ordos 09.09.2009 23:44 # 0
guest 07.09.2009 02:19 # 0
Ordos 07.09.2009 08:15 # 0
guest 07.09.2009 08:21 # 0
guest 07.09.2009 13:41 # +1
Что может быть тошнотворнее транслита?
Смесь транслита и перевода!
Ordos 07.09.2009 13:59 # 0
guest 09.09.2009 23:10 # 0
Ordos 09.09.2009 23:43 # 0
guest8 09.04.2019 18:19 # −999
guest8 09.04.2019 18:19 # −999
guest8 09.04.2019 18:19 # −999