在C#中的Regex类的常用方法及正则的简单使用,StringBuilder类字符串常用方法,Math匹配模式用法,Datetime时间常用方法

前言

“不积跬步,无以至千里;不积小流,无以成江海”

2019年4月12日
(1)匹配字符以及索引。并最后将匹配到字符将其替换

MatchCollection通过检索集合的属性的值来访问对象的各个成员 ,同时利用Match类和MatchCollection类,可以获得通过一个正则表达式实现的每一个匹配的细节。

          static void Main(string[] args)
        {
    
    
            //匹配字符,并索引出来,然后将它调换(查找替换)
            string input = "a nihao haha shazi set" + "my name is ligang";
            Console.WriteLine(input);
            MatchCollection mc = Regex.Matches(input, @"ligang");
            Console.WriteLine("共找到" + mc.Count + "个匹配");
            foreach (Match s in mc)
            {
    
    
                Console.WriteLine("在索引" + s.Index + "处发现:" + s.Value);
            }
            Console.WriteLine("请输入要修改的字符值");
            string names = Console.ReadLine();
            string newname = Regex.Replace(input, "ligang", names);
            Console.WriteLine("已经成功\n" + newname);
            Console.ReadLine();
        }
2019年4月13日
(2)匹配1A2B3C4D匹配符 group[0]cartrue[0]的使用
             //要匹配的字符
             string arr = "1A 2B 3C 4D ffee80 #80050";
             //正则表达式
             string zebds = @"((\d+)([a-z]))\s+";
            //使用RegexOption.IgnorreCase枚举值表示不区分大小   
            Regex r = new Regex(zebds,RegexOptions.IgnoreCase);
            //开始匹配字符串仅返回一次匹配结果
            Match m = r.Match(arr);
            //循环
            while (m.Success) {
    
    
                //显示匹配开始处索引值和匹配到的值
                System.Console.WriteLine("Match=["+m+"]");
                CaptureCollection cc = m.Captures;
                foreach (Capture c in cc)
                {
    
    
                    Console.WriteLine("\tCapture=["+c+"]");
                }
                for (int i = 0; i < m.Groups.Count; i++)
                {
    
    
                    Group group = m.Groups[i];
                    System.Console.WriteLine("\t\tGroups[{0}]=[{1}]", i, group);
                    for (int j = 0; j < group.Captures.Count; j++)
                    {
    
    
                        Capture capture = group.Captures[j];
                        Console.WriteLine("\t\t\tCapture[{0}]=[{1}]", j, capture);
                    }
                }
                m = m.NextMatch();
            }
            Console.ReadLine();
2019年4月18日
(3)Math的简单使用

1)向上进位取整,只要小数点大于0.1(便返回该值最大限值)

 Console.WriteLine(Math.Ceiling(32.1)); 

2)向下舍位取整,舍弃小数取整数

 Console.WriteLine(Math.Ceiling(32.1)); 

3)【32,100】两数比较取最小值min(最大值max)

   Console.WriteLine(Math.Min(32,100));  

4)两数取商

    Console.WriteLine(Math.DivRem(50, 2, out int a)); 

5)取该数的绝对值

   Console.WriteLine(Math.Abs(-65));   

6)取该数是否相等

  Console.WriteLine(Math.Equals(10,10));      //取该数是否相等
2019年4月13日
(4)StringBuilder类的 Append(),Insert(),Remove()简单使用
            string Digit = "张三";
            StringBuilder SB = new StringBuilder(Digit);           
            Console.WriteLine(SB.Append("你好"));          //显示“Append”张三你好,追加字符(添加)
            Console.WriteLine(SB.Insert(2,"傻子"));        //显示“Insert”张三傻子你好(从第几个字符开始插入,插入什么)
            Console.WriteLine(SB.Insert(2, "傻子", 3));    //(从第几个字符开始插入,插入什么,插入几遍)
            Console.WriteLine(SB.Remove(2,8));            //显示“Remove”张三你好,删除(从第几个开始删除,删除几个)
            Console.WriteLine(SB.ToString());              //显示“Digit”字符串,表示当前对象
2019年4月20日
(5)Regex类及正则表达式的简单使用

1)验证是否为字母 不区分大小写

       public bool VerifyLetter(string input)
        {
    
    
            if (!Regex.IsMatch(input, @"^[A-Za-z]+$", RegexOptions.IgnoreCase))
            return false;else return true;
        }

2)验证有效出生日期

    protected bool DateTimebool(string vale)
        {
    
    
            if (!DateTime.TryParse(vale, out DateTime Reult))
            {
    
    
                return false;
            }
            else
            {
    
    
                return true;
            }
        }

3)验证有效1[358] 开头的电话号码

   protected bool NumIPhone(string value)
        {
    
    
            Regex regx = new Regex(@"^1[358]\d{9}$", RegexOptions.Multiline);
            if (!regx.IsMatch(value))
            {
    
    
                return false;
            }
            else
            {
    
    
                return true;
            }
        }

4)IsMath的用法 比如拥有 Regex reg = new Regex(“123456”);

IsMatch()”在此字符串中是否包含“123456”,返回值为 true/false。

  //
  bool b = a.IsMatch("你好你好123456");  

“Match”匹配是否包含“123456”,如果包含那么将提取出来。

   var c = a.Match("你好你好哈哈123456");  

这里的Var类型,他是属于一个强类型的推断类型,他会根据右边的值来推断并确定自己本身是一个什么类型。

            string arr = "  15173381510* "; 
            string d= arr.Replace("*", "#");                 //“Replace”将里面字符调换,(“要调换的”,“调换值”)
            string o = arr.Trim();                           //“Trim”将字符串内的前后空格给删除
            Regex aa = new Regex("151");   //查找“151”
            var dd = aa.Replace(arr, "999", 2, 3);          //(字符源,替换值,偷换几次,从第几个字符开始替换)
            string pp = arr.Insert(0, "插入");              //“Insert”插入(从第几个字符开始插入,插入的值)

            string letter = "AbCd";
            Console.WriteLine(Regex.IsMatch(letter,"abcd",RegexOptions.IgnoreCase));  //静态验证是否有“abcd”字符,忽略大小写

RegEx类常用的方法

静态Match方法

使用静态Match方法,可以得到源中第一个匹配模式的连续子串。
静态的Match方法有2个重载,分别是
Regex.Match(string input, string pattern);
Regex.Match(string input, string pattern, RegexOptions options);
第一种重载的参数表示:输入、模式
第二种重载的参数表示:输入、模式、RegexOptions枚举的“按位或”组合。
RegexOptions枚举的有效值是:
Complied表示编译此模式
CultureInvariant表示不考虑文化背景
ECMAScript表示符合ECMAScript,这个值只能和IgnoreCase、Multiline、Complied连用
ExplicitCapture表示只保存显式命名的组
IgnoreCase表示不区分输入的大小写
IgnorePatternWhitespace表示去掉模式中的非转义空白,并启用由#标记的注释
Multiline表示多行模式,改变元字符^和$的含义,它们可以匹配行的开头和结尾
None表示无设置,此枚举项没有意义
RightToLeft表示从右向左扫描、匹配,这时,静态的Match方法返回从右向左的第一个匹配
Singleline表示单行模式,改变元字符.的意义,它可以匹配换行符
注意:Multiline在没有ECMAScript的情况下,可以和Singleline连用。Singleline和Multiline不互斥,但是和ECMAScript互斥。

静态的Matches方法

这个方法的重载形式同静态的Match方法,返回一个MatchCollection,表示输入中,匹配模式的匹配的集合。

静态的IsMatch方法

此方法返回一个bool,重载形式同静态的Matches,若输入中匹配模式,返回true,否则返回false。
可以理解为:IsMatch方法,返回Matches方法返回的集合是否为空。

2019年4月20日
(5)Datetime类的时间常用方法
            Console.WriteLine("第"+DateTime.Now.Month+"月");   //显示今天第几月
            Console.WriteLine(DateTime.Now.ToString());        //2019/4/12显示年月份加时间

            //显示2019年4月星期5
            Console.WriteLine(DateTime.Now.Year+"年"+DateTime.Now.Month+"月"+"星期"+Convert.ToInt16           (DateTime.Now.DayOfWeek));

            Console.WriteLine(string.Format("{0:C}",10000));            //¥10,000.00
            Console.WriteLine("购票时间{0}",DateTime.Now.ToShortTimeString());      //购票时间20:36
            Console.WriteLine(DateTime.Now.ToLongDateString());          //2019年4月
            
             Console.WriteLine(DateTime.Now.AddDays(-1));  //获取昨天日期
            Console.WriteLine(DateTime.Now.AddYears(1));   //获取明年今日

猜你喜欢

转载自blog.csdn.net/WenRouDG/article/details/108965625
今日推荐