• 获取银行货币汇率的


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

    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);
            }
        }
  • 相关阅读:
    欢迎使用CSDN-markdown编辑器
    欢迎使用CSDN-markdown编辑器
    Math类简介
    Math类简介
    http_server
    tcp服务器
    swoole安装
    laravel源码解析
    VMware的Unity模式
    string.format() %d越界的问题
  • 原文地址:https://www.cnblogs.com/xiaoshuai/p/1759736.html
Copyright © 2020-2023  润新知