asp.net 获取银行货币汇率的代码

高洛峰
高洛峰 原创
2017-01-16 10:41:14 1311浏览
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); 
} 
}

更多asp.net 获取银行货币汇率的代码相关文章请关注PHP中文网!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。