asp.net re正则表达式,筛选返回的字符串中时间单号金额,把不规范的时间格式转化为正确的时间格式

一、这里写的是一个测试方法,只需要粘贴该方法,传需要传的参数即可。返回参数为字典类型的键值对始情况可进行修改

1.方法一的时间处理是先提取年月日,再提取时分秒,然后再合并年月日时分秒

protected Dictionary<string, string>  getPrameters( string str)
        {
            Dictionary<string, string> dit = new Dictionary<string, string>();// listPra = new List<string>();
            string regx1 = "[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))";
            Regex r1 = new Regex(regx1);
            var m1 = r1.Match(str);
            string regx4 = "(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))";
            Regex r4 = new Regex(regx4);
            var m4 = r4.Match(str);
            var m4F = m4.Value.Replace(':', ':');
            var date = (m1.Value + " " + m4F).ToString();

            //DateTime a = Convert.ToDateTime(datet);

            //var datet2 = m4.Value.Replace(':', ':');
            //DateTime a2 = Convert.ToDateTime(datet2);
            //DateTime? dateNew = null;
            if (!string.IsNullOrEmpty(date) && date != " ")
            {
                //dateNew = Convert.ToDateTime(date);
                dit.Add("time", date.ToString());
            }
            else
            {
                dit.Add("time", null);
            }
            string regxp2 = "((-)?(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){1,2}))";
            Regex r2 = new Regex(regxp2);
            var m2 = r2.Match(str);
            dit.Add("money", m2.Value);

            string regxp3 = "([1-9]{1}\\d*){10,}";
            Regex r3 = new Regex(regxp3);
            var m3 = r3.Match(str);
            dit.Add("code", m3.Value);
            return dit;
        }

2.方法二的时间处理是直接提取年月日时分秒,然后进行处理,转换为正确的时间格式
       

protected Dictionary<string, string> getPrameters1(string str)
        {
            Dictionary<string, string> dit = new Dictionary<string, string>();// listPra = new List<string>();
            //支付时间  
            string regx1 = "[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))";
            Regex r1 = new Regex(regx1);
            var m1 = r1.Match(str);
            var datef = string.Empty;
            if (!string.IsNullOrEmpty(m1.Value))
            {
                string regx4 = "(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))";
                Regex r4 = new Regex(regx4);
                var m4 = r4.Match(m1.Value);
                var m4F = m4.Value.Replace(':', ':');
                datef = m1.Value.Replace(m4.Value, " " + m4F);
            }
            if (!string.IsNullOrEmpty(datef) && datef != " ")
            {
                //dateNew = Convert.ToDateTime(date);
                dit.Add("time", Convert.ToDateTime(datef).ToString());
            }
            else
            {
                //dit.Add("time", null);
                //通知时间
                string rex = @"(\d{2,4}(\.|年|\/|\-))?((0?[469]|11)(\.|月|\/|\-))((30)|([12][0-9])|(0?[1-9]))日(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))";

                Regex rg = new Regex(rex, RegexOptions.Multiline | RegexOptions.Singleline);
                var dateHan = rg.Match(str).Value;
                var dateTZ = string.Empty;
                var dateNow = DateTime.Now;//11月5日
                DateTime? payTime = null;
                if (!string.IsNullOrEmpty(dateHan))
                {
                    string regx5 = "(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))";
                    Regex r5 = new Regex(regx5);
                    var m5 = r5.Match(dateHan);
                    var m5F = m5.Value.Replace(':', ':');
                    dateTZ = dateHan.Replace(m5.Value, " " + m5F);
                    var date = Convert.ToDateTime(dateTZ);
                    if (date > dateNow)
                    {
                        payTime = date.AddYears(-1);
                    }
                    else
                    {
                        payTime = date;
                    }
                }
                if (!string.IsNullOrEmpty(dateTZ) && dateTZ != " ")
                {
                    //dateNew = Convert.ToDateTime(date);
                    dit.Add("time", payTime.ToString());
                }
                else
                {
                    //dit.Add("paytime", null);
                    dit.Add("time", null);
                }
            }
            //收款金额
            string regxp2 = "((-)?(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){1,2}))";
            Regex r2 = new Regex(regxp2);
            var m2 = r2.Match(str);
            dit.Add("money", m2.Value);
            //交易单号
            string regxp3 = "([1-9]{1}\\d*){10,}";
            Regex r3 = new Regex(regxp3);
            var m3 = r3.Match(str);
            dit.Add("code", m3.Value);

            
            return dit;
        }

二、调用

var str = "";
           
var str = "";
var dit = getPrameters1(str);
Response.Write("时间:" + dit["time"] + "<br />");
Response.Write("金额:" + dit["money"] + "<br />");
Response.Write("单号:" + dit["code"] + "<br />");

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值