asp.Net銀行通貨為替レートを取得するコード
2322 ワード
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[] { "", "" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string ss in sTBody)
{
if (ss.Contains("Currency Name"))
{
string[] sbrs = ss.Split(new string[] { "" }, 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 = @"(.+?)";
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);
}
}