Lession10 常用类(正则表达式、Date Time结构、string类、Math类)

Date Time结构:

using System;

namespace ConsoleApp1            //Date_Time_结构
{
    class Program
    {
        static void Main(string[] args)
        {
            //例子;使用DateTime获取当前时间,分别输出该日是当月的第几天,星期几,及一年中的第几天
            //并计算30天后的日期
            DateTime dt = DateTime.Now;
            Console.WriteLine("当前日期为:{0}", dt.ToLongTimeString());
            Console.WriteLine("当前是本月的第{0}天", dt.Day);
            Console.WriteLine("当前是星期{0}", dt.DayOfWeek);
            Console.WriteLine("当前是本年度的第{0}天", dt.DayOfYear);
            Console.WriteLine("30天后的日期是{0}", dt.AddDays(30));
            Console.WriteLine("---------------------------------------");
            //两个日期的差可以由TimeSpan的对象来存放   假设计算现在距离2021年5月1日的天数
            DateTime dt2 = new DateTime(2021, 5, 1);
            TimeSpan ts = dt2 - dt;
            Console.WriteLine("间隔的天数为:{0}天", ts.Days);


            Console.ReadKey();
        }
    }
}

Math类: 

/*
     * 圆周率:
     * Abs():取绝对值
     * Ceiling(): 向上取整数(就是说小数点后面只要有非0的值,就直接+1取整)
     * Floor():向下取整数(就是说,小数点后面不管是什么值,都返回整数这个值)
     * Round():四舍五入
     * Max():返回两个数中的最大值
     * Min():返回两个数中的最小值
     * Equals():返回指定对象实例是否相等
     */

using System;

namespace ConsoleApp1        //_Math类
{
    /*
     * 圆周率:
     * Abs():取绝对值
     * Ceiling(): 向上取整数(就是说小数点后面只要有非0的值,就直接+1取整)
     * Floor():向下取整数(就是说,小数点后面不管是什么值,都返回整数这个值)
     * Round():四舍五入
     * Max():返回两个数中的最大值
     * Min():返回两个数中的最小值
     * Equals():返回指定对象实例是否相等
     */
    class Program
    {
        static void Main(string[] args)
        {
            //圆周率
            Console.WriteLine(Math.PI);
            //求绝对值
            Console.WriteLine(Math.Abs(-2));
            Console.WriteLine(Math.Abs(-2.1F));
            Console.WriteLine(Math.Abs(10));
            //ceiling() 向上取整数(就是说小数点后面只要有非0的值,就直接+1取整)
            Console.WriteLine(Math.Ceiling(33.0));
            Console.WriteLine(Math.Ceiling(33.1));
            Console.WriteLine(Math.Ceiling(33.8));
            Console.WriteLine("----------------------------");
            //Floor()向下取整数(就是说,小数点后面不管是什么值,都返回整数这个值)
            Console.WriteLine(Math.Floor(33.0));
            Console.WriteLine(Math.Floor(33.1));
            Console.WriteLine(Math.Floor(33.8));
            Console.WriteLine("----------------------------");
            //Round() 四舍五入
            Console.WriteLine(Math.Round(33.0));
            Console.WriteLine(Math.Round(33.2));
            Console.WriteLine(Math.Round(33.6));

            Console.WriteLine("----------------------------------");
            Console.WriteLine(Math.Equals(11, 12));
            Console.WriteLine(Math.Equals(11, 11));
            Console.WriteLine("----------------------------------");
            Console.WriteLine("请输入第一个整数:");
            int num1 = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入第二个整数:");
            int num2 = int.Parse(Console.ReadLine());
            Console.WriteLine("两个数的最大值是{0}", Math.Max(num1, num2));
            Console.WriteLine("两个数的最小值是{0}", Math.Min(num1, num2));

            Console.ReadKey();
        }
    }
}

 

Random类:

 /*
     * 要使用Random类的话,先实例化
     * Next():每次产生一个不同的随机整数
     * Next(int maxValue):产生一个比max value小的正整数
     * Next(int minValue,int maxValue):产生一个minValue~maxValue的正整数,但不包括maxVlue
     * NextDouble():产生0.0~1.0的浮点数
     * NextBytes(byte[] buffer)用随机数填充字节数的数组 
     *
     * 
     */

 

using System;

namespace ConsoleApp1        //Random类
{
    /*
    * 要使用Random类的话,先实例化
    * Next():每次产生一个不同的随机整数
    * Next(int maxValue):产生一个比max value小的正整数
    * Next(int minValue,int maxValue):产生一个minValue~maxValue的正整数,但不包括maxVlue
    * NextDouble():产生0.0~1.0的浮点数
    * NextBytes(byte[] buffer)用随机数填充字节数的数组 
    *
    * 
    */
    class Program
    {
        static void Main(string[] args)
        {
            //Random随机数类
            Random rd = new Random();
            Console.WriteLine("产生一个随机的整数:{0}", rd.Next());
            Console.WriteLine("产生一个比30小的正整数:{0}", rd.Next(30));
            Console.WriteLine("产生一个10以内的随机数:{0}", rd.Next(0, 11));
            Console.WriteLine("产生一个0到1之间的浮点数:{0}", rd.NextDouble());

            byte[] b = new byte[5];//byte:0-255     sbyte:-128~127
            rd.NextBytes(b);
            foreach (byte i in b)
            {
                Console.Write(i + " ");
            }


            Console.ReadKey();
        }
    }
}

 String Builder类:

/*StringBuilder sb = new StringBuilder(); (注意引用命名空间 using System.Text;)
     * sb.Append():追加字符串
     * sb.ToString():把StringBuilder转换成String类型
     * sb.Insert():插入
     * sb.Replace():替换
     * sb.Remove():删除
     * 
     * 
     */

using System;
using System.Text;

namespace ConsoleApp        //stringBuilder类
{
    /*StringBuilder sb = new StringBuilder(); (注意引用命名空间 using System.Text;)
     * sb.Append():追加字符串
     * sb.ToString():把StringBuilder转换成String类型
     * sb.Insert():插入
     * sb.Replace():替换
     * sb.Remove():删除
     * 
     * 
     */
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("屈增辉");
            sb.Append("何帅");
            sb.Append("李佳敏");
            sb.Insert(3, "王拓");
            sb.Replace("王拓", "李琴琴");
            sb.Remove(3, 3);

            Console.WriteLine(sb.ToString());
            Console.ReadKey();
        }
    }
}

 

String类: 

/*
     * 1.字符串是不可变性
     * 当你给一个字符串重新赋值之后,老值并没有销毁,而是重新开辟了一块空间存储新值
     * 当程序结束后,GC扫描整个内存,如果发现有的空间没有被指向,则立即销毁
     * 
     * 我们可以将字符串看做是一个char类型的一个只读数组
     * ToCharArray():将字符串转换为Char类型的数组
     * 
     * 字符串提供的各种方法
     * 1.Length:获得字符串中字符个数
     * 2.ToUpper():将字符转换成大写形式
     * 3.ToLower():将字符转换成小写形式
     * 4.Equals(lessionTwo,StringComparison.OrdinalIgnoreCase):比较两个字符串,可以忽略大小写
     * 5.Trim():去掉字符串当中的前后空格
     * 6.TrimStart():去掉字符串当中的前空格
     * 7.TrimEnd():去掉字符串当中的后空格
     * 8.Split():分割字符串 返回一个字符串数组.在截取的时候,包含要截取的那个位置,
     * 9.Substring(int startIndex):从startIndex位置截取字符串
     *   Substring(int startIndex,int Length) :从startIndex位置开始截取长度为Length的字符串
     * 10.Contains():判断某个字符串是否包含指定的字符串
     * 11.Replace():将字符串中某个字符串替换成一个新的字符串
     * 12.StartsWith():判断以...开始
     * 13.EndsWith():判断以....结束
     * 14.IndexOf():判断某个字符串在字符串中第一次出现的位置,如果没有返回-1
     * 15.LastIndexOf():判断某个字符串在字符串中最后一次出现的位置,如果没有返回-1
     * 16.string.Join():将数组按照指定的字符串连接,返回一个字符串
     * 17.string.IsNullOrEmpty():判断一个字符串是否为空或者为null
     * 18.string.Format():格式化字符串
     * 19.remove():删除字符串里面的字符
     * 
     * 
     * 
     */

using System;
using System.Text;

namespace ConsoleApp1        //String类
{
   
    class Program
    {
        static void Main(string[] args)
        {
            //@符号:取消它在字符中的转义作用
            // string rou = @"E:\net\demo";
            // Console.WriteLine(rou);
            // //将字符串按照原格式输出
            // string words = @"今天天气不好,
            //     但是大家的学习热情很高";
            // Console.WriteLine(words);
            // Console.WriteLine("---------------------------");
            // string s = "abcdefg";
             我们可以将字符串看做是一个char类型的一个只读数组
            // Console.WriteLine(s[0]);
            // //首先吧字符串转换成char类型的数组
            // char[] chs = s.ToCharArray();
            // chs[0] = 'b';
            //将char数组再转换成字符串
            //s = new string(chs);
            //Console.WriteLine(s);
            //Console.WriteLine("s的字符串长度是{0}",s.Length);
            //练习:输入一个你心中想的那个人的名字,然后输出一个它的字符长度
            //Console.WriteLine("请输入你心中想的那个人的名字:");
            //string name = Console.ReadLine();
            //Console.WriteLine("你心中想的那个人的名字的长度为{0}", name.Length);

            //Console.WriteLine("请输入你喜欢的课程:");
            //  string lessionOne = Console.ReadLine();
            //  //将字符串转换成大写
            //  // lessionOne = lessionOne.ToUpper();
            //  //将字符串转换成小写
              lessionOne = lessionOne.ToLower();
            //  Console.WriteLine("请再输入你喜欢的课程:");
            //  string lessionTwo = Console.ReadLine();
            //  //lessionTwo = lessionTwo.ToLower();
            //  //if (lessionOne == lessionTwo)
            //  //{
            //  //    Console.WriteLine("真巧,咱俩都喜欢这个课程");
            //  //}
            //  //else
            //  //{
            //  //    Console.WriteLine("哎,咱俩喜欢的不一样");
            //  //}
            //  // Console.WriteLine(lessionOne);
            //  if (lessionOne.Equals(lessionTwo,StringComparison.OrdinalIgnoreCase))
            //  {
            //      Console.WriteLine("真巧,咱俩都喜欢这个课程");
            //  }
            //  else
            //  {
            //      Console.WriteLine("哎,咱俩喜欢的不一样");
            //  }
            //string str = "          哈哈小笨蛋       ";
            //Console.WriteLine(str.Length);
            //Console.WriteLine(str.Trim().Length);
            //Console.WriteLine(str.TrimStart().Length);
            //Console.WriteLine(str.TrimEnd().Length);

            Console.WriteLine("------------------------------------");
            // string s = "a b dfdf  _  +  = ,,, fada";
            //分割字符串Split()
            //char[] chs = {' ','_','+','=',',' };
            //string[] str = s.Split(chs,StringSplitOptions.RemoveEmptyEntries);

            //练习:从日期字符串("2021-04-07")中分割出年月日,输出:2021年04月07日
            //string s = "2021-04-07";
            //char[] chs = { '-' };
            //string[] date = s.Split(chs, StringSplitOptions.RemoveEmptyEntries);
            //Console.WriteLine("{0}年{1}月{2}日",date[0],date[1],date[2]);

            //练习Substring():截取 字符串
            // string str = "今天天气好晴朗,处处好风光";
            //  str = str.Substring(1); 
            //str = str.Substring(2,2);
            //Console.WriteLine(str);

            //练习Contains(),Replace()
            //string str = "物联网一班牛逼";
            //if (str.Contains("牛逼"))
            //{
            //    str = str.Replace("牛逼","**");
            //}
            //Console.WriteLine(str);

            //练习StartsWith(),EndsWith()

            //string str = "今天天气好晴朗,处处好风光";
            //if (str.EndsWith("光"))
            //{
            //    Console.WriteLine("是的");
            //}
            //else
            //{
            //    Console.WriteLine("不是");
            //}

            //练习IndexOf(),LastIndexOf()

            //string str = "今天天气好晴朗,处处好风光";
            //int index= str.IndexOf('处');
            //int lastIndex = str.LastIndexOf("处");
            //int index2 = str.IndexOf('天',2);
            //int index3 = str.IndexOf('一');

            //Console.WriteLine(index);
            //Console.WriteLine(lastIndex);
            //Console.WriteLine(index2);
            //Console.WriteLine(index3);

            //练习string.Join()    
            //string[] names = { "屈增辉", "李佳敏", "何帅", "李琴琴", "李心怡", "赵文凤", "张艺明" };
               屈增辉|李佳敏|何帅|李琴琴|李心怡|赵文凤|张艺明
            string strNew = string.Join("|", "屈增辉", "李佳敏", "何帅", "李琴琴", "李心怡", "赵文凤", "张艺明");
            //string strNew = string.Join("-",names);

            //Console.WriteLine(strNew);

            //练习 string.IsNullOrEmpty()
            //string str = "";
            //if (string.IsNullOrEmpty(str))
            //{
            //    Console.WriteLine("是的");
            //}
            //else
            //{
            //    Console.WriteLine("不是");
            //}

            //练习  string.Format()

            string name = "张艺明1234567890";
            int age = 19;
            //string str = "我的名字是" + name + ",今年" + age + "岁";
            //使用Format()
            // string str = string.Format("我的名字是{0},今年{1}岁", name, age);
            //使用$
            string str = $"我的名字是{name},今年{age}岁";
            string re = name.Remove(3, 5);


            Console.WriteLine("re的值是" + re);
            Console.WriteLine(str);

            Console.WriteLine("---------------------------------");
            string path = @"c:\a\b\c\fsd\dsad\ewrewr\dfgfdg\好看的视频.mp4";
            //1.找到最后一个\的位置
            int index = path.LastIndexOf("\\");//双斜线的第一个斜线是转义符,转义成“\”单斜线的意思
            //2.截取
            path = path.Substring(index + 1);
            Console.WriteLine("path的值是:" + path);






            Console.ReadKey();
        }
    }
}

 String类和StringBuilder类测试:

using System;
using System.Diagnostics;
using System.Text;

namespace  ConsoleApp1  //String类和StringBuilder类测试
{
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();
          //  string str = null;
            //创建一个计时器,用来记录程序运行的时间
            Stopwatch sw = new Stopwatch();
            sw.Start(); //开始计时
            for(int i = 0;i < 100000; i++)
            {
                // str += i;   
                sb.Append(i);//添加   
            }
            sw.Stop();//结束计时、
            Console.WriteLine(sw.Elapsed);//测量运行的总时间
            Console.WriteLine(sb.ToString());
            Console.ReadKey();


        }
    }
}

正则表达式: 

/*
     * 正则表达式是用来进行文本处理的技术,跟语言无关,在几乎所有的语言中都有实现
     * 它是对文本,对字符串操作的
     * 一个正则表达式就是由普通字符以及特殊字符(元字符)组成的文字模式
     * 
     * 1.正则表达式的元字符:
     *  A:.表示除\n之外的任意的单个字符
     *  B: []字符组,任意的单个字符,中括号中的任意一个字符
     *  
     *  a.b  ->avb 
     *  a[1-9]b  ->a5b
     *  a[xyz]b ->axb  ayb  azb
     *  a[a-zA-Z0-9]b   
     *  a[axz.]b      a.b
     *  
     *  C:|  表示或的意思,但是“或”优先级非常低,最后才算
     *  
     *  z|food->    z或者food
     *  (z|f)ood ->  zood 或者food
     *  
     *  D:()改变优先级的
     *  
     *  限定符:
     *  E:{n}:表示前面的表达式必须出现n次
     *  F:{n,}:表示前面的表达式至少出现n次,最多不限
     *  G:{n,m}:表示前面的表达式至少出现n次,最多出现m次
     *  {5,10}{5}{5,} 
     *  
     *  H.*:表示出现0次或者多次   {0,}
     *  I.+:表示出现1次或者多次   {1,}
     *  J.?:表示0次或者1次  {0,1}
     *  
     *  colou?r  ->color     colour
     *  (colou)?r  ->r     colour
     *  
     * ^与$
     * 
     * k. ^表示字符串的开始
     * L. $表示字符串的结尾
     *  ^hello
     *  a[^0-9a-z] ->这是另一个意思,代表非
     *  a$
     *  
     *  简写表达式
     *  \d:表示[0-9]
     *  \D:表示[^0-9]
     *  a[0-9]b => a\db
     *  
     *  \s 表示所有空白符
     *  \S 表示\s的反面
     *  
     *  \w [a-zA-Z0-9]
     *  \W 就是\w的反面
     *  
     * 
     * Regex.IsMatch方法用于判断一个字符串是否匹配正则表达式  (一定不能忘了^和$)
     *  
     * 
     * 
     */

using System;
using System.Text.RegularExpressions;

namespace ConsoleApp1            //正则表达式
{
    /*
      * 正则表达式是用来进行文本处理的技术,跟语言无关,在几乎所有的语言中都有实现
      * 它是对文本,对字符串操作的
      * 一个正则表达式就是由普通字符以及特殊字符(元字符)组成的文字模式
      * 
      * 1.正则表达式的元字符:
      *  A:.表示除\n之外的任意的单个字符
      *  B: []字符组,任意的单个字符,中括号中的任意一个字符
      *  
      *  a.b  ->avb 
      *  a[1-9]b  ->a5b
      *  a[xyz]b ->axb  ayb  azb
      *  a[a-zA-Z0-9]b   
      *  a[axz.]b      a.b
      *  
      *  C:|  表示或的意思,但是“或”优先级非常低,最后才算
      *  
      *  z|food->    z或者food
      *  (z|f)ood ->  zood 或者food
      *  
      *  D:()改变优先级的
      *  
      *  限定符:
      *  E:{n}:表示前面的表达式必须出现n次
      *  F:{n,}:表示前面的表达式至少出现n次,最多不限
      *  G:{n,m}:表示前面的表达式至少出现n次,最多出现m次
      *  {5,10}{5}{5,} 
      *  
      *  H.*:表示出现0次或者多次   {0,}
      *  I.+:表示出现1次或者多次   {1,}
      *  J.?:表示0次或者1次  {0,1}
      *  
      *  colou?r  ->color     colour
      *  (colou)?r  ->r     colour
      *  
      * ^与$
      * 
      * k. ^表示字符串的开始
      * L. $表示字符串的结尾
      *  ^hello
      *  a[^0-9a-z] ->这是另一个意思,代表非
      *  a$
      *  
      *  简写表达式
      *  \d:表示[0-9]
      *  \D:表示[^0-9]
      *  a[0-9]b => a\db
      *  
      *  \s 表示所有空白符
      *  \S 表示\s的反面
      *  
      *  \w [a-zA-Z0-9]
      *  \W 就是\w的反面
      *  
      * 
      * Regex.IsMatch方法用于判断一个字符串是否匹配正则表达式  (一定不能忘了^和$)
      *  
      * 
      * 
      */
    class Program
    {
        static void Main(string[] args)
        {
            #region 案例一
            //while (true)
            //{
            //  Console.WriteLine("请输入一个邮政编码:");
            //    string postCode = Console.ReadLine();
            //    //验证是否是合法的邮政编码
            //    //IsMatch()表示重要整个字符串中有任何一部分可以匹配该正则表达式,则返回true
            //    //[0-9]{6} :6个0到9的数字
            //    //bool b = Regex.IsMatch(postCode,"^[0-9]{6}$");
            //    bool b = Regex.IsMatch(postCode, "^\\d{6}$");
            //    //要求必须是6个数字开头,并且必须是6个数字结尾,所以说就是,必须完全匹配
            //    Console.WriteLine(b);
            //    

            //}
            #endregion

            #region 案例二
            //while (true)
            //{
            //    Console.WriteLine("请输入:");
            //    string msg = Console.ReadLine();
            //    bool b = Regex.IsMatch(msg, "^((z|food)$");
            //    Console.WriteLine(b);
            //}

            #endregion


            #region 案例三
            //要求用户输入一个整数,匹配是否为 >=10并且<=20的数

            while (true)
            {
                Console.WriteLine("请输入一个10—20之间的整数,含10和20:");
                string msg = Console.ReadLine();
                // 1[0-9]|20   
                bool b = Regex.IsMatch(msg,"^1[0-9]|20$");
                Console.WriteLine(b);
            }


            #endregion

            Console.ReadKey();
        }
    }
}

 

正则表达式之Match类和MatchCollection类:

using System;
using System.Text.RegularExpressions;

namespace ConsoleApp1        //正则表达式之Match类和MatchCollection类
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = "a sailor went to sea to set,to see what he could sec";
            //MatchCollection是Macth对象的集合
            MatchCollection mc = Regex.Matches(input, @"se\w");
            Console.WriteLine($"共找到了{mc.Count}个匹配");
            foreach (Match s in mc)
            {
                Console.WriteLine($"在索引{s.Index}处发现{s.Value}");
            }
            Console.ReadKey();

        }
    }
}

 正则练习:

 /*
     * 1.判断一个字符串是不是身份证号码
     * 分析:18为   前17位都是数字  第一位非0,最后一位1-9或xX
     * ^[1-9][0-9]{16}[1-9xX]$
     * 
     * 2.判断合法的邮箱地址
     * xxxx@163.com     xx_x-x@qq.com    xxx@xx-xx.com.cn
     * 用户名:数字 字母,下划线  中划线  
     * 域名:数字,字母  中划线
     * 后缀: .开头  后面可能是字母 ,后面也有可能.和字母
     * 
     * 用户名:[0-9a-zA-Z_-]+
     * 域名:  [a-zA-Z0-9-]+
     * 后缀:(.[a-zA-Z]+){1,2}
     * 
     * ^[0-9a-zA-Z_-]+@[a-zA-Z0-9-]+(.[a-zA-Z]+){1,2}$
     */

 

using System;
using System.Text.RegularExpressions;

namespace ConsoleApp1        //正则练习
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.WriteLine("请输入一个合法的邮箱地址:");
                string email = Console.ReadLine();
                bool b = Regex.IsMatch(email, "^[0-9a-zA-Z_-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z]+){1,2}$");
                Console.WriteLine(b);
            }

        }
    }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞鹰@四海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值