asp.net code to get the bank's currency rate

  • 2020-05-12 02:26:05
  • OfStack

 
class ExchangeRate 
{ 

private const string _BASEURL = " The web address "; 
public const string CURRENCYCODE = " Currency type '|' separated ";// Currency type  

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); 
} 
} 

Related articles: