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~127rd.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);}#endregionConsole.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);}}}
}