C#去除时间格式化之后中间的T字母

 

需求是这样的, 前后端传参,然后后端序列化把字符串存在数据库. 然后发现时间类型的字段,序列化之后 ,有个字母T, 

DateTime dt = DateTime.Parse("2024-05-28 23:49:43");

 string st = JsonConvert.SerializeObject(dt);

输出 2024-05-28T23:49:43

 

如果是一个实体类对象,有多个时间类型的字段, 序列化出来就有多段.

考虑用正则表达式处理

1.先找出来 满足条件的日期时间格式

 string regex1 = @"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}";

2.正则表达式匹配多段

        public List<string> GetMatchList(string input, string pattern)
        {
            List<string> list = new List<string>();
            Regex regex = new Regex(pattern);
            var mc = regex.Matches(input);
            if (mc.Count>0)
            {
                for (int i = 0; i < mc.Count; i++)
                {
                    var match = mc[i].Value;
                    if (!list.Contains(match))
                    {
                        list.Add(match);
                    }
                   
                }
            }
            return list;
        }

下面是测试用例:

        public  void test2()
        {
            DateTime dt = DateTime.Parse("2024-05-28 23:49:43");
            DateTime dt2 = DateTime.Parse("2024-05-27 23:49:43");
            string st = JsonConvert.SerializeObject(dt);
            string st2 = JsonConvert.SerializeObject(dt2);

            string st3 = st + "Testhi,AsTesT" + st2;

            string regex1 = @"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}";

            Console.WriteLine("原始字符串");
            Console.WriteLine(st3);
            List<string>list = GetMatchList(st3, regex1);

            for (int i = 0; i < list.Count; i++)
            {
                st3 = st3.Replace(list[i], list[i].Replace("T", " "));
            }
            Console.WriteLine("处理后的字符串");
            Console.WriteLine(st3);
        }

输出结果:

原始字符串
"2024-05-28T23:49:43"Testhi,AsTesT"2024-05-27T23:49:43"
处理后的字符串
"2024-05-28 23:49:43"Testhi,AsTesT"2024-05-27 23:49:43"

 

posted @ 2024-05-30 11:07  兴想事成  阅读(91)  评论(0编辑  收藏  举报