asp.net 获取银行货币汇率的代码 |
时间:2015-01-29 来源:互联网 作者:佚名 |
|
复制代码 代码如下: class ExchangeRate {
private const string _BASEURL = "网页地址"; public const string CURRENCYCODE = "货币类型以'|'隔开";//货币类型
public Hashtable GetValues() { Hashtable htReturn = new Hashtable();
string url = _BASEURL; //+ HttpUtility.UrlEncode(tmSet.ToString("yyyy/MM/dd", DateTimeFormatInfo.InvariantInfo));
WebClient wc = new WebClient(); string sHtml = wc.DownloadString(url); string sXml = string.Empty; int iValueCnt = CURRENCYCODE.Split(new char[] { '|' }, 10, StringSplitOptions.RemoveEmptyEntries).Length; string[] sTBody = sHtml.Split(new string[] { "<tbody>", "</tbody>" }, StringSplitOptions.RemoveEmptyEntries); foreach (string ss in sTBody) { if (ss.Contains("Currency Name")) { string[] sbrs = ss.Split(new string[] { "</tr>" }, StringSplitOptions.RemoveEmptyEntries); foreach (string sbr in sbrs) { string scur = string.Empty; double dRate = GetCurrencyRate(sbr, out scur);
if (dRate != 0.0 && !string.IsNullOrEmpty(scur)) { htReturn.Add(scur, dRate * 0.01); if (htReturn.Count >= iValueCnt) break; } } break; } }
return htReturn; }
private double GetCurrencyRate(string source, out string sCurrency) { sCurrency = string.Empty;
string sPattern = @"<td.+?>(.+?)</td>"; foreach (Match m in Regex.Matches(source, sPattern)) { string ss = m.Groups[1].Value; if (IsNumeric(ss)) return double.Parse(ss); else { if (CURRENCYCODE.Contains(ss)) sCurrency = ss.Trim(); else break; } }
return 0.0; }
public static bool IsNumeric(string str) { if (string.IsNullOrEmpty(str)) return false;
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"^[-]?\d+[.|,]?\d*$"); return reg.IsMatch(str); } }
|
|
|
|