首页 > 编程语言 >c#去html标志,对字符串保留数字小数点,有中文的日期转化等特殊数据处理

c#去html标志,对字符串保留数字小数点,有中文的日期转化等特殊数据处理

时间:2023-08-08 10:32:45浏览次数:48  
标签:Regex dates c# Htmlstring 小数点 html RegexOptions Replace newStr



命名空间


using System.Text.RegularExpressions;






1.我们采集到的数据 比如有些日期很不规则 带有中文 比如2013年5月8日     2013年5月  这里提供把这类不规则的日期转化成datatime类型




public DateTime  ConvertTime(string a)
        {
           

             DateTime dt;
             try
             {
                 try
                 {
                     dt = Convert.ToDateTime(a);
                 }
                 catch 
                 {
                     dt = ClearDate(a);
                 
                 }

             }
             catch
             {
                 string newStr = "";

                 Regex re = new Regex(@"(\d{2,4})年(\d{1,2})月(\d{1,2})日*|(\d{2,4})年(\d{1,2})月*|(\d{1,2})月(\d{1,2})日*|(\d

{2,4})年*", RegexOptions.None);
                     string[] lines = re.Split(a);
                     List<string> dates = new List<string>();
                   


                     int n;
                     if (lines.Length >= 4)
                     {
                         for (int i = 0; i < 4; i++)
                         {
                             if (int.TryParse(lines[i], out n))
                             {
                                 dates.Add(lines[i].ToString()); //为数字
                             }


                         }
                     }
                     else 
                     {
                         for (int i = 0; i < lines.Length; i++)
                         {
                             if (int.TryParse(lines[i], out n))
                             {
                                 dates.Add(lines[i].ToString()); //为数字
                             }


                         }
                     }

                     if (dates.Count() == 1)
                     {
                        
                         newStr = dates[0].ToString()+"-1-1";
                     }
                     else 
                     {
                         for (int s = 0; s < dates.Count(); s++)
                         {
                             if (s == dates.Count() - 1)
                             {
                                 if (dates[s] == "" | dates[s] == "0" | dates[s] == "00")
                                 {
                                     dates[s] = "1";
                                 }
                                 newStr += dates[s].ToString();
                             }
                             else
                             {
                                 if (dates[s] == "" | dates[s] == "0" | dates[s] == "00")
                                 {
                                     dates[s] = "1";
                                 }
                                 newStr += dates[s].ToString() + "-";
                             }

                         }

                     }
                   
                


                 dt = Convert.ToDateTime(newStr);
             }
          return dt;
        
        }


   public DateTime ClearDate(string a)
        {

            Regex r = new Regex(@"([1-9]\d*\-{1}\d*\-{1}\d*)");

            //开始匹配
            Match m = r.Match(a);
            string newStr = "";
            while (m.Success)
            {
                //匹配成功
                newStr += m.Groups[0].Value;

                //从上一个匹配结束的位置开始下一个匹配
                m = m.NextMatch();
            }

          return  Convert.ToDateTime(newStr);
        }





直接调用ConvertTime就可完成转换  





2.带中文的字符串只保留数字和小数点


public double ConvertNumber(string a)
        {

            Regex r = new Regex(@"([1-9]\d*\.?\d*)|(0\.\d*[1-9])");

            //开始匹配
            Match m = r.Match(a);
            string newStr = "";
            while (m.Success)
            {
                //匹配成功
                newStr += m.Groups[0].Value;

                //从上一个匹配结束的位置开始下一个匹配
                m = m.NextMatch();
            }
            if (newStr == "")
            {
                newStr = "0.0";
            }
            return Convert.ToDouble(newStr);
        }









3.去html标志


public static string NoHTML(string Htmlstring)
        {
            //删除脚本
            Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "",
              RegexOptions.IgnoreCase);
            //删除HTML
            Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "",
              RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "",
              RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"",
              RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&",
              RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<",
              RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">",
              RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", "   ",
              RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1",
              RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2",
              RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3",
              RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9",
              RegexOptions.IgnoreCase);
            Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "",
              RegexOptions.IgnoreCase);

            Htmlstring.Replace("<", "");
            Htmlstring.Replace(">", "");
            Htmlstring.Replace("\r\n", "");
           // Htmlstring = System.Web.HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();
            Htmlstring = Htmlstring.Trim();
            return Htmlstring;
        }







标签:Regex,dates,c#,Htmlstring,小数点,html,RegexOptions,Replace,newStr
From: https://blog.51cto.com/u_16218512/7005091

相关文章

  • c#操作excel方式三:使用Microsoft.Office.Interop.Excel.dll读取Excel文件
     1、引用Microsoft.Office.Interop.Excel.dll2、引用命名空间、使用别名usingSystem.Reflection;usingExcel=Microsoft.Office.Interop.Excel;  3.写入excel写入函数publicvoidToExcel(stringstrTitle){intnMax=9;intnMin=4......
  • 代码覆盖率-Jacoco
    Jacoco1、什么是jacocojacoco是一个免费、开源java代码覆盖率工具。2、什么是代码覆盖率覆盖率是用来衡量测试代码对功能代码的测试情况,通过统计测试中对功能代码中行、分支、类等模拟场景数量,来量化说明测试的充分度。代码覆盖率=代码的覆盖程度,一种度量方式覆盖率简单说:跑......
  • Mac版PDF编辑器-Acrobat Pro DC 2023
    AcrobatProDC2023(pdf编辑器)是一款能让用户轻松创建和编辑多种pdf格式的实用工具,并且能够同时使用各种方法编辑大量pdf文件。AcrobatProDC是Mac上运行速度最快、处理能力最强、功能最丰富的工具之一。AcrobatProDC包括强大的图像编辑工具,可让您轻松编辑图片和视频,而......
  • AutoCAD2024软件Mac中文版最新功能介绍支持M1/2
    AutoCAD2024软件的最新功能,包括行业特定的工具集、新的自动化以及跨设备和Autodesk产品的无缝连接。AutodeskAutoCAD不仅提供出色的绘图功能,而且提供了对工程工具使用方法及工作流程进行全面优化的方式。所有这一切都使用户能够轻松地创建工程应用程序,从而帮助他们提高工作效......
  • C# 读取带CheckBox复选框控件的表格-并集成到Windows Service里面
    最近的项目要求读取xls文件内的单元格,并且单元格旁边会有复选框标识类型。搜了下只有java的POI有例子,NOPI看项目文档好像是没有实现读取控件的功能。java实现POI POI如何解析出excel中复选框是否被选中https://blog.csdn.net/qq_29832217/article/details/104413475 C#导......
  • Siemens 西门子S7-200 PLC使用高速脉冲输入测量瞬时流量
    西门子S7-200PLC高速计数功能除用于常见的运动控制系统转速测量之外,在流量计量方面也有着广泛的用途。由于PLC内部没有相应的算法来计算频率,因此,测定脉冲输出信号的流量计的瞬时流量就需要在STEP7Micro/WINSMART中通过以下三部分编程来实现:1、定义高速计数器计数流量计输出......
  • Mac之入门篇
    简单讲讲mac上几个比较重要的东西:1,homebrewmac上的包管理器,同apt-get,yum等一系列包管理器一同,作为命令行级别的应用商店,在安装软件和配置依赖之时有着不可取代的大用。2,office365中所周知,微软就是macos上程序的最大开发商(......
  • vscode搬家
    1、vscode搬家针对C盘空间不足的伙伴们注意,操作前先关闭vscode1.1、vscode相关目录C:\Users\helper\AppData\Roaming\CodeC:\Users\helper\AppData\Local\Programs\MicrosoftVSCodeC:\Users\helper\.vscode其中helper为当前登录系统的账户1.2、创建存放vscode相关文件......
  • Siemens 西门子S7-200 SMART PLC与组态王以太网通信
    组态王与S7-200SMARTPLC以太网通信,对于刚接触者有点难度,不知如何进行配置,如何通信,那么接下来教大家来一步一步来做通信。一、下载驱动第一步:(在组态王官方下载TCP驱动文件)下载链接:http://www.kingview.com/第二步:(下载完成,如下图所示)压缩文件二、配置TCP驱动文件第一步:(解......
  • Siemens 西门子S7-200 SMART PLC与MM440变频器USS通信
    1、控制要求S7-200SMARTPLC通过USS通讯方式MM440控制变频器,I0.0启动变频器、I0.1立即停车变频器、I0.2自由停车变频器、I0.3复位变频器故障、I0.4启动变频器正转、I0.5启动变频器反转及可以读取变频器当前电流与当前电压。2、PLCIO分配表3、编写程序第一步:(上电初始化......