zoukankan      html  css  js  c++  java
  • 获取银行货币汇率的

    这个主要公司做外贸的每天都需要更新汇率,本来以前有一个服务可以调用,但是那个连接用不了 所以就写了一个这样的东西 套取网页显示信息

    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);
            }
        }
  • 相关阅读:
    #333 Div2 Problem B Approximating a Constant Range(尺取法)
    苦逼的单身狗(玄乎的尺取大法)
    欧拉项目第四题之三位数之积数的最大回数
    欧拉项目第三题之最大质数因子
    关于尺取法的认识与简单例题
    codeforces 980B Marlin
    康托展开和逆康托展开
    Chrome控制台中Network的Preview与Response区别
    配置Express中间件
    Express中间件简介
  • 原文地址:https://www.cnblogs.com/xiaoshuai/p/1759736.html
Copyright © 2011-2022 走看看