C#基础 类及常用函数【string 、Math 、DiteTime 、TimeSpan】
一 string 类型
string str = "abcdefg";
str.Length - 字符串长度,返回int类型
str.TrimStart() - 去掉前空格
str.TrimEnd() - 去掉后空格
str.Trim() - 去掉字符串的前后空格 string // 只能去掉前,后的空格,不能去掉中间的空格
str.ToUpper(); - 将字符串中的小写英文字符转换成大写
str.ToLower(); - 将字符串中的小写英文字符转换成大写
str.SubString(a); 截取字符串,留下索引a(包含)以后的字符 // 注意索引必须在长度以内否则报错
str.SubString(a,b); 从索引a(包含)开始截取,截取b个字符
str.IndexOf("串"); - 返回字符串中第一个匹配项的索引
str.LastIndexOf("串"); - 返回最后一个匹配项的索引 //如果没有匹配项返回-1
str.StartWith("串"); - 判断是否以什么开头 // 返回bool类型
str.EndsWith("串"); - 判断是否以什么结尾
str.Contains("串"); - 判断是否包含 //不看位置
str.Replace(“1”, “2”); - 字符替换 ,用2替换1 //可以消除字符串中间的空格
str.Remove(3); - 移除从索引到末尾的全部字符
二 Math 类
Math.Pow(x,y); - 次方 double d = Math.Pow(2.3);
Math.Sqrt(x); - 平方根 d = 2的3次方
Math.Ceiling(double); - 取上限 double d = Math.Ceiling(10.3); d = 11
Math.Floor(double); - 取下限
Math.Round(double); - 取四舍五入 //整数部分奇数时.5上位。整数部分为偶数.5舍去
Math.Abs(double); - 取绝对值
三 DiteTime 类
1、定义时间(对象实例化)
DateTime dt = new DateTime(); DateTime dt =DateTime.Now; //获取此电脑系统当前时间 DateTime dt = new DateTime(int年,int月.int日); //日期格式
2、string 转换成 DateTime
string s = "2002年2月2日"; DateTime dt = Console.ToDateTime(s);
3、DateTime 转换成 string
string s = dt.ToString ("yyyy年MM月dd日");
//yyyy-年 MM-月 dd-日 hh-12制小时 HH-24制小时 mm-分钟 ss-秒 ms-毫秒
dt.AddYears(); - 在此时间基础上增加多少年 dt = dt.AddYears(10); //在原时间的基础上加十年
dt.AddMonths(); - 增加月
dt.AddDays(); - 增加日
dt.AddHours(); - 增加小时
dt.AddMinutes(); - 增加分钟
dt.AddSeconds(); - 增加秒
dt.Year; - 获取此时间变量的年份 Console.WriteLine(dt.year); //只输出年(int类型)
dt.Month; - 获取月份
dt.Day; - 获取日
dt.Hour; - 获取小时
dt.Minute; - 获取分钟
dt.Second; - 获取秒
dt.Millisecond; - 获取毫秒
dt.DayOfYear; - 获取当前日期是此年中的第几天
Console.WriteLine(dt.DayOfYear); //输出这天是此年的第几天
dt.DayOfWeek; - 获取是星期几
DateTime dt =DateTime.Now; //返回英文格式的星期 string a = dt.DayOfWeek; //获取数字格式的星期 0 1 2 3 4 5 6 int i = Convert.ToInt32(dt.DayOfWeek); //直接用汉字输出星期 日 一 二 三 四 五 六 string xingqi = "星期"+“日一二三四五六”.Substring(i,1);
dt.TimeOfDay; - 获取时间部分 // 只获取时分秒
dt.Date; - 获取日期部分
四 TimeSpan类型 - 时间间隔类型
DateTime dt = new DateTime(2017,3,1); DateTime dtt = new DateTime(2017,3,1); TimeSpan ts = dtt-dt //输出结果为31.00:00:00
//可为负数
ts.Days - 差距多少天 //只取天数
ts.Hours - 一天中差距多少小时 //一天中相差多少时间,不比较年月日,只看小时
ts.Minutes - 一天中差距多少分钟
ts.Seconds - 一天中差距多少秒
ts.Milliseconds - 毫秒
ts.Total.... 累计差距
ts.TotalHours(); //输出一共差多少小时
实例
1“请输入您的邮箱:”123@123
1-“邮箱正确!/错误!”
2-“只能有一个@符号”
3-“不能以@开头”
4-“不能以@结尾”
5-“@之后必须有点”
6-“@之后不能是点”
7- @之后最少一个点,最多两个点
8-“不能以点结尾”
9-不能以数字结束
1 4 //1-“邮箱正确!/错误!” string 放置最终结果 5 string end = "邮箱正确!"; 6 //2-“只能有一个@符号” bool 7 bool atOnlyOne = true; 8 //3-“不能以@开头” bool 9 bool atStart = true; 10 //4-“不能以@结尾” bool 11 bool atEnd = true; 12 //5-“@之后必须有点” bool 13 bool atDian = true; 14 //6-“@之后不能是点” bool 15 bool atNoDian = true; 16 //7-最少一个点,最多两个点 17 bool dianOneOrTwo = true; 18 //8-“不能以点结尾” 19 bool dianEnd = true; 20 //9-不能以数字结束 21 bool NumEnd = true; 22 23 //一、让用户输入邮箱 24 Console.Write("请输入您的邮箱地址:"); 25 string user_mail = Console.ReadLine(); 26 27 if (user_mail.Length > 0) 28 { 29 #region 是否只有一个@符号 30 int a1 = user_mail.IndexOf("@"); 31 32 if (a1 == -1) 33 { 34 atOnlyOne = false; 35 end = "邮箱格式错误!"; 36 } 37 else 38 { 39 int a2 = user_mail.IndexOf("@", a1 + 1); 40 if (a2 != -1) 41 { 42 atOnlyOne = false; 43 end = "邮箱格式错误!"; 44 } 45 } 46 #endregion 47 48 #region 判断是否以@开头 49 if (user_mail.StartsWith("@")) 50 { 51 atStart = false; 52 end = "邮箱格式错误!"; 53 } 54 #endregion 55 56 #region 判断是否以@结尾 57 if (user_mail.EndsWith("@")) 58 { 59 atEnd = false; 60 end = "邮箱格式错误!"; 61 } 62 #endregion 63 64 #region 判断@之后有没有点,判断如果有点,是不是超过两个 65 string a3 = user_mail.Substring(user_mail.IndexOf("@")); 66 int a4 = a3.IndexOf("."); 67 if (a4 == -1) 68 { 69 atDian = false; 70 end = "邮箱格式错误!"; 71 } 72 else 73 { 74 //@sina.com.cn 75 int a6 = 1; //记录点的个数 76 int a5 = a3.IndexOf("."); //获取第一个点的索引 77 78 while (true) 79 { 80 a5 = a3.IndexOf(".", a5 + 1);//持续往后找点 81 if (a5 != -1) 82 a6++; 83 else 84 break; 85 } 86 87 if (a6 > 2) 88 { 89 dianOneOrTwo = false; 90 end = "邮箱格式错误!"; 91 } 92 } 93 #endregion 94 95 #region @之后不能是点 96 if (user_mail.IndexOf("@.") != -1) 97 { 98 atNoDian = false; 99 end = "邮箱格式错误!"; 100 } 101 #endregion 102 103 #region 不能以点结尾 104 if (user_mail.EndsWith(".") == true) 105 { 106 dianEnd = false; 107 end = "邮箱格式错误!"; 108 } 109 #endregion 110 111 #region 不能以数字结束 112 string a10 = user_mail.Substring(user_mail.Length - 1, 1); 113 try 114 { 115 Convert.ToInt32(a10); 116 NumEnd = false; 117 end = "邮箱格式错误!"; 118 } 119 catch { } 120 #endregion 121 122 #region 打印结果 123 //打印结果!!! 124 if (atOnlyOne == false) 125 Console.WriteLine("只能有一个@符号"); 126 if (atStart == false) 127 Console.WriteLine("不能以@开头"); 128 if (atEnd == false) 129 Console.WriteLine("不能以@结尾"); 130 if (atDian == false) 131 Console.WriteLine("@之后必须有点"); 132 if (atNoDian == false) 133 Console.WriteLine("@之后不能是点"); 134 if (dianOneOrTwo == false) 135 Console.WriteLine("最少一个点,最多两个点"); 136 if (dianEnd == false) 137 Console.WriteLine("不能以点结尾"); 138 if (NumEnd == false) 139 Console.WriteLine("不能以数字结束"); 140 141 Console.WriteLine(end); 142 #endregion 143 } 144 else 145 { 146 Console.WriteLine("邮箱不能为空!"); 147 } 148 149 150 Console.ReadKey();
2“请输入身份证号(18位):”
判断正确性:
全数字
最后一位x/X
中间时间是否正确
“您的生日是:xxxx年xx月xx日”
1 Console.Write("请输入您的身份证号:"); 2 string user = Console.ReadLine(); 3 4 //判断是否是18位 5 if (user.Length == 18) 6 { 7 string user17 = user.Substring(0, user.Length - 1); 8 9 try 10 { 11 Convert.ToInt64(user17); 12 //如果能走到这里,说明没问题 13 string userLast = user.Substring(user.Length - 1, 1); 14 bool LastIsNumber = true; 15 try 16 { 17 Convert.ToInt32(userLast); 18 } 19 catch { LastIsNumber = false; } 20 21 //判断最后一位是否正确 22 if (userLast.ToLower() == "x" || LastIsNumber ) 23 { 24 //如果走到这里,说明格式都正确 25 //判断日期是否正确 26 string year = user.Substring(6, 4); 27 string month = user.Substring(10, 2); 28 string day = user.Substring(12, 2); 29 30 try 31 { 32 DateTime dt = new DateTime(Convert.ToInt32(year), Convert.ToInt32(month), Convert.ToInt32(day)); 33 34 Console.WriteLine("您的生日是:"+dt.ToString("yyyy年MM月dd日")); 35 } 36 catch { Console.WriteLine("身份证日期不正确!"); } 37 } 38 else 39 { 40 Console.WriteLine("输入的格式不正确!1"); 41 } 42 } 43 catch 44 { 45 Console.WriteLine("输入的格式不正确!2"); 46 } 47 } 48 else 49 Console.WriteLine("身份证位数不正确!3"); 50 51 Console.ReadKey();
3
“请输入年:”
“请输入月:”
“请输入日:”
判断是否正确
“xxxx年xx月xx日是此年中的第xx天,星期几”
“距离2012年12月24日世界末日还有xxx天”
“距离2012年12月24日世界末日已经过去了xxx天”
“您输入的是世界末日!!!”
1 Console.Write("请输入年:"); 2 string year = Console.ReadLine(); 3 Console.Write("请输入月:"); 4 string month = Console.ReadLine(); 5 Console.Write("请输入日:"); 6 string day = Console.ReadLine(); 7 8 try 9 { 10 DateTime dt = new DateTime(Convert.ToInt32(year), Convert.ToInt32(month), Convert.ToInt32(day)); 11 12 string week = "星期" + "日一二三四五六".Substring(Convert.ToInt32(dt.DayOfWeek), 1); 13 Console.WriteLine(dt.Year + "年" + dt.Month + "月" + dt.Day + "日是此年中的第" + dt.DayOfYear + "天," + week); 14 15 DateTime dtt = new DateTime(2012, 12, 24); 16 17 TimeSpan ts = dt - dtt; 18 19 int ddd = Convert.ToInt32(ts.TotalDays); 20 21 if (ddd < 0) 22 { 23 Console.WriteLine("距离2012年12月24日世界末日还有" + Math.Abs(ddd) + "天"); 24 } 25 else if (ddd > 0) 26 { 27 Console.WriteLine("距离2012年12月24日世界末日已经过去了" + ddd + "天"); 28 } 29 else 30 { 31 Console.WriteLine("您输入的是世界末日!!!"); 32 } 33 } 34 catch { Console.WriteLine("你填的些啥???"); } 35 36 37 38 Console.ReadLine();