第九章常用类
目标
Math类
- 为三角函数、对数函数和其他通用数学函数提供常数和静态方法
- 对数字变量提供操作方法
- 系统类,只需会操作
class Program
{
static void Main(string[] args)
{
//Math类是一个静态类
Console.WriteLine(Math.PI);//圆周率
Console.WriteLine(Math.Abs(-2));//返回自然数的绝对值
Console.WriteLine(Math.Acos(0.5));//返回余弦值为指定数字的角度(单位为弧度)
Console.WriteLine(180*Math.Acos(0.5)/Math.PI);//返回余弦值为指定数字的角度
Console.WriteLine(Math.Floor(6.7));//对小数向下取整
Console.WriteLine(Math.Round(6.7));//返回四舍五入的值
Console.WriteLine(Math.Sqrt(9));//返回指定数的平方根
Console.WriteLine(Math.Pow(3, 2));//求一个数的指定次幂
}
}
Random类
- 命名空间:System
伪随机生成器
- 伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,因为它们是一种确定的数学算法选择的,但是从实用的角度而言,其随机程度已经够用。
class Program
{
static void Main(string[] args)
{
//Random类是用来产生随机数的一个系统类
// 第一种实例化
Random rd = new Random();
Console.WriteLine(rd.Next());//返回一个随机数
Console.WriteLine(rd.Next(10));//返回一个指定最大值的随机数
Console.WriteLine(rd.Next(100,200));//返回一个指定范围的随机数
//第二种实例化
Random rd2 = new Random(6);
for (int i = 0; i < 10; i++)
{
Console.Write(rd2.Next(100,200)+" ");
}
}
}
DateTime类
- 一个结构体,它表示时间上的一刻,通常以日期和当天的时间表示
构造函数
- Datetime
静态属性
- Now
- Today
static void Main(string[] args)
{
//DateTime是表示时间的结构体
Console.WriteLine(DateTime.IsLeapYear(2024)); //年份是否是闰年
Console.WriteLine(DateTime.Now);//获取此计算机上的当前时间
Console.WriteLine(DateTime.Now.AddYears(3));//在当前时间的基础上加上相应的日期
Console.WriteLine(DateTime.Today);//获取此计算机上的当前日期,时间为0
Console.WriteLine(DateTime.Today.ToLongDateString());//获取此计算机上的当前日期
Console.WriteLine(DateTime.Today.ToShortDateString());//获取此计算机上的当前日期
Console.WriteLine(DateTime.Now.ToLongTimeString());//获取此计算机上的当前时间,时分秒
Console.WriteLine(DateTime.Now.ToShortTimeString());//获取此计算机上的当前时间,时分
Console.WriteLine(DateTime.Now.ToString());//获取此计算机上的当前时间
Console.WriteLine(DateTime.Now.ToString());//获取当地的时间
}
String类和StringBUilder类
System.String类
- 具有不变性
- 和string关键字对应
- 可以使用“+”连接多个字符串
- 可以使用索引器提取字符
- 频繁的插入、删除或替换操作就会明显的降低性能
StringBuilder类
- 具有可变性
- 只能进行增、删、改操作
- Length,属性获取字符串的实际长度,Capacity属性获取字符串占据的内存容量
实例
static void Main(string[] args)
{
//String和StringBuiler都是和字符串有关的类
//String类
string str = "你好," + "我是FSY,我是FSY,我是FSY";
Console.WriteLine(str);
Console.WriteLine(str.Length);//计算字符串的长度,空格也算
Console.WriteLine(str.Remove(3,5));//从0开始计算,删除后面的字符
Console.WriteLine(str.Replace("F", "Y"));//替换指定字符
Console.WriteLine(str.Insert(3,"1"));//插入字符的位置及字符
Console.WriteLine(str.Substring(3,5));//从字符串中提取一些字符
Console.WriteLine("======================================================");
//按照指定规则分割字符串
string[] arr = str.Split(',');
//遍历输出数组中的元素
foreach (string item in arr)
{
Console.WriteLine(item+"*");
}
Console.WriteLine("========================================================");
//StringBuilder具有可变性
StringBuilder sb = new StringBuilder("Hello World");
Console.WriteLine(sb.Capacity);//字符串在内存中的容量
sb.Append("!你好,世界!");//在字符串后追加内容
Console.WriteLine(sb);
Console.WriteLine(sb.Capacity);//字符串在内存中的容量
sb.Remove(3, 5);//将指定范围的字符从此实例中移除
Console.WriteLine(sb);
}
正则表达式
- 引入System.Text.RegularExpressionsi命名空间
Regex
- 包含了正则表达式,以及使用正则表达式的各种方法。
MathchCollction
- 包含了一个正则表达式找到的所有匹配项。
Match
- 包含了一次匹配中所有匹配的文本。
GroupCollection
- 包含了一次匹配中的所有分组。
Group
- 包含了一个分组集合中一个组的细节。
CaptureCollection
- 包含一个组的所有Capture对象。
Capture
- 返回组内一次捕获所匹配的字符串。
Regex类
构造方法
Regex(string pattern);
Regex(string pattern,RegexOptions options);
标志 | 描述 |
---|---|
IgnoreCase | 忽略大小写,默认是区分大小写的 |
None | 不设定标志,这是默认选项 |
MultiLine | 指定了^和$可以匹配行的开头和结尾,以及字符串的开头和结尾。也就是说,使用换行符分隔,在每一行都能得到不同的匹配。但“.”仍然不匹配换行符 |
IsMatch()方法
实例方法
- New regex
静态方法
- Regex.IsMatch
实例
class Program
{
static void Main(string[] args)
{
//第一种:创建正则表达式对象
Regex rg = new Regex("ABC");
string str = "there is much ABC";
//使用IsMatch方法对字符串进行匹配
Console.WriteLine(rg.IsMatch(str));
//第二种:创建正则表达式对象
Regex reg = new Regex("ABC", RegexOptions.IgnoreCase);//不区分大小写
string str1 = "there is much AbC";
Console.WriteLine(reg.IsMatch(str1));
}
Replace()方法
实例方法
- New regex
静态方法
- Regex.Replace
实例
Console.WriteLine(Regex.Replace("舔狗得house", "得", "不得"));
Split()方法
- 静态方法
public static string[]Split(string input,string pattern)
public static string[]Split(string input,string pattern,RegexOptions options)
- 实例方法
string[] strArr = Regex.Split("绿色生态,绿色生活,铜绿,人生赢家", "绿");
foreach (var item in strArr)
{
Console.WriteLine(item);
}
MathchCollction类
Match类和MathchCollction类
- 利用正则表达式进行匹配时往往匹配成功的次数不止1次,如果想知道每一个成功匹配的细节,则需要用Match类和MatchCollection类。
- Match类表示一次成功的匹配,MatchCollection类是一个Match对象的集合。
- 我们可以使用Regex类的Match()方法来得到一个Match对象或者用Matchs()方法来得到一个MatchCollection对象
C#正则表达式匹配字符之含义
1、正则表达式的作用:用来描述字符串的特征。
2、各个匹配字符的含义:
, :表示除\n以外的单个字符
[] :表示在字符数组[门中罗列出来的字符任意取单个
| :表示”或"的意思
() :表示改变优先级或"提取组"
* :限定前面的表达式出现0次或多次
+ :限定前面的表达式出现1次或多次
? :限定前面的表达式出现0次或1次
^ :表示以表达式开头(例:^http表示字符串以"http"开头)
$ :表示以表达式结尾(例:com$表示字符串以"com"结尾)
\d :小写\d表示0-9之间的数字
\D :大写\D表示除了0-9之外的字符
\w :写\w表示[a-zA-Z0-9]
\W :大写\W表示除了[a-zA-Z0-9]之外的字符
\s :小写\s表示非可见字符(如空格、tab、\r\n..........)
\S :大写\S表示除了非可见字符之外的字符
实例
string str3="a sailor went to sea to set,to see what he could see";
MatchCollection mc = Regex.Matches(str3,"se\\w");//\是分隔符,\w是一个字符
Console.WriteLine(mc.Count);
foreach (Match item in mc)
{
Console.WriteLine(item);
}
//验证手机号
string phoneNum = "^1[0-9]{10}$";//手机号的规律
string tel = Console.ReadLine();
//判断用户输入的数字是不是手机号
if (Regex.IsMatch(tel,phoneNum))
{
Console.WriteLine("是一个手机号");
}
else
{
Console.WriteLine("随便了");
}
总结
- 掌握Math类及方法的使用
- 掌握Randoma类及方法的使用
- 掌握DateTime类及方法的使用
- System.String类的对象具有不变性
- System.Text.StringBuilder类的对象的内容可以改变
- Regex类可用正则表达式处理复杂的字符串问题
醒醒吧阿祖,没有人来看你的博客
blog我吃定了,耶稣也留不住它,我说的!