c#软件开发学习笔记
一、随机数Random
1.创建一个随机数队列
//10是一个种子,一般不指定种子,默认以当前时间作为种子,时间不一样,种子不一样 随机数也不一样
Random random = new Random(10);
2. 获取随机数
Console.WriteLine(rnd.Next());
Console.WriteLine(rnd4.Next(10, 21)); //产生一个10到21之间的随机数,包含10 不包含21
Console.WriteLine(rnd4.Next(21));// 如果从0开始 可以前面数省掉
二、DateTime类
DateTime是一个结构体,用来对时间进行操作,存储关于时间的函数或者属性
1.获取当前时间
DateTime time = DateTime.Now;
Console.WriteLine(time);//2026/5/21 14:04:22
2.获取时间结构
Console.WriteLine(time.Year);//年 2026
Console.WriteLine(time.Month);//月份 5
Console.WriteLine(time.Day);//日期 21
Console.WriteLine(time.Hour);//小时 14
Console.WriteLine(time.Minute);//分钟 04
Console.WriteLine(time.Second);//秒 22
Console.WriteLine(time.Millisecond);//毫秒 428
Console.WriteLine(time.DayOfWeek);// 星期 Thursday
Console.WriteLine((int)time.DayOfWeek);//4 把星期英语转成数字,星期日转成数字是0
Console.WriteLine(time.DayOfYear);//141 当年的第几天
3. 时间转字符串
Console.WriteLine(time.ToString());//"2026/5/21 14:04:22"字符串
//yyyy 完整年2026
//yy 后俩位26
Console.WriteLine(time.ToString("yyyy")); //2026
//MM 俩位数的月份05
//MMMM 五月
//MMM 5月
Console.WriteLine(time.ToString("MM"));//05
//dd 21
//ddd 周四
//dddd 星期四
Console.WriteLine(time.ToString("dd"));//21
//HH 24小时制
//hh 12小时制
Console.WriteLine(time.ToString("HH"));//14
//mm 分钟
Console.WriteLine(time.ToString("mm"));
//ss 秒
Console.WriteLine(time.ToString("ss"));
//fff 毫秒
Console.WriteLine(time.ToString("fff"));
Console.WriteLine(time.ToString("今天是yyyy年,MM月dd日,HH:mm:ss,今天是dddd"));
4.时间戳
指格林威治时间1970年01月01日00时00分00秒(北京时间1970年 01月01日08时00分00秒) 到现在的总秒数
DateTime time1 = DateTime.Now; // 获取当前时间
DateTimeOffset offset = new DateTimeOffset(time1); //获取时间戳 获取当前时间到1970年时间差
long l1 = offset.ToUnixTimeSeconds(); //获取距离1970之间的秒
//日期 ====> 时间戳 ===> 总秒数储存
long l1= new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds();
//取数据 ====> 时间戳 ====> 日期
DateTime time1= DateTimeOffset.FromUnixTimeSeconds(1752042623).LocalDateTime;
5.时间的计算与对比
DateTime t1 = DateTime.Now;
//addYears() 在原先的基础之上加上一年 生成一个新的日期,不会再原先的日期进行修改
t1 = t1.AddYears(1);
t1 = t1.AddMonths(2);
t1 = t1.AddDays(3);
//因为DateTime重载了比较运算符
//所以DateTime 可以直接 使用 > < >= <= == !=进行比较
if (DateTime.Now> new DateTime(2026,5,1))
Console.WriteLine("已经过了五一");
else
Console.WriteLine("还没过了五一");
//时间间隔
TimeSpan span = new DateTime(2026, 5, 21,16,0,0) - DateTime.Now;
//时间间隔的天数
Console.WriteLine(span.Days);
三、string字符串
1.创建字符串
//最简单定义方式
string s1 = "abc";
//@这种定义字符串的方法可以保留原始字符串中的格式
string s2 = @"C:\Users\Administrator\Desktop\img";
//通过new 创建字符串
string s3 = new string('c',4);
2.字符串方法
//1.Concat() 拼接字符串
string s4 = string.Concat(s1, s2, s3);
//2.Contains() 判断参数字符串 是否出现在源字符串中
//出现 返回true 不出现返回 false
bool b = s2.Contains("吴");
//3.CopyTo() 把aa字符串里面字符按照指定索引和个数进行赋值到数组的指定位置
// 参数1 从aa哪个位置开始赋值, 写0从头开始赋值
// 参数2 复制到目标数组
// 参数3 复制到目标数组哪个位置
// 参数4 复制的个数
aa = "ef";
char[] chars = new char[] {'a','b'}; //定义一个char[] 类型的数组,长度是2
aa.CopyTo(0, chars, 0, 2 );
for (int i = 0; i < chars.Length; i++) //遍历数组,把数组所有的元素进行操作
{
Console.WriteLine(chars[i]+"");
}
//4.ToUpper() 将小写字母 转成大写字母
string s5 = "AbdDd";
Console.WriteLine(s5.ToUpper());//ABDDD
//5.ToLower() 将大写字母 转成小写字母
Console.WriteLine(s5.ToLower());//abddd
string str2 = "锄禾日当午";
//7.Replace() 替换字符
Console.WriteLine(str2.Replace("锄", "*"));
Console.WriteLine(str2.Replace("锄禾", "**"));
Console.WriteLine(str2.Replace("锄禾日", "***"));
//8.StartsWith() 判断源字符串 是否以参数字符串开头
Console.WriteLine(str2.StartsWith("锄禾"));
//9.EndsWith() 判断源字符串 是否以参数字符串结尾
Console.WriteLine(str2.EndsWith("无"));
//10.判断参数字符串和源字符串 是否完全相同 等同于 == 运算符
Console.WriteLine(str2.Equals("锄禾日当午"));
string s6 = "ABCscahihdifhu123434ccHIUDAHS";
//11.IndexOf() 从前向后 查询参数字符串首次在源字符串中出现的索引位置,如果查询不到 则返回-1
Console.WriteLine(s6.IndexOf("e"));
//12. LastIndexOf()从后向前 查询参数字符串首次在源字符串中出现的索引位置,如果查询不到 则返回-1
Console.WriteLine(s6.LastIndexOf("A"));
//13.IndexOfAny() 从前向后 查询源字符串首次在出现的指定字符数组中任意一个字符的位置
Console.WriteLine(s6.IndexOfAny(new char[] { 'a', 'b', 'c' }));
//14.LastIndexOfAny() 从后向前 查询源字符串首次在出现的指定字符数组中任意一个字符的位置
Console.WriteLine(s6.LastIndexOfAny(new char[] { 'a', 'b', 'c' }));
string st1 = "";
string st2 = null;
string st3 = string.Empty;
string st4 = "132";
//15.IsNullOrEmpty() 判断参数字符串 是否为 "" null Empty
Console.WriteLine(string.IsNullOrEmpty(st1));
Console.WriteLine(string.IsNullOrEmpty(st2));
Console.WriteLine(string.IsNullOrEmpty(st3));
Console.WriteLine(string.IsNullOrEmpty(st4));
//16.Insert() 在指定的索引位置插入字符串 生成新的字符串
Console.WriteLine(st4.Insert(0, "张三"));
//17.Join() 把后面字符串按照第一个参数符号进行连接
string ss = string.Join("-","a","b","c");
string n1 = "张三,李四,王五";
//18.Remove() 从索引为5的位置开始 删除后面所有的字符,返回删除后的字符串
Console.WriteLine(n1.Remove(5));
Console.WriteLine(n1.Remove(2,5));//从索引为2的位置开始,删除后面5个字符,返回删除后的字符
//19.Split() 分割把字符串按照指定符号进行分割 把分割之后结果放进数组里面
ee= "a-b-c-d";
string[] arr = ee.Split('-');
//20.ToCharArray() 将字符串转换为字符数组
char[] chars3 = n1.ToCharArray();
//20.Substring() 截取字符串 参数1:开头的位置 参数2:截取的长度
Console.WriteLine(n1.Substring(4,3));
string n2 =" 张三 ";
Console.WriteLine(n2);
//21.Trim() 移除字符串前后的空格
Console.WriteLine(n2.Trim());
//TrimStart() 移除前面的空格
Console.WriteLine(n2.TrimStart());
//TrimEnd() 移除后面空格
Console.WriteLine(n2.TrimEnd()+"1");
四、StringBuilder可变字符串
1.String类型用于保存字符串,为引用类型,一旦创建,就不能再进行修改,其底层是根据字符数组(char[])实现的
2.StringBuilder表示可变字符字符串类型,其中的字符可以被改变、增加、删除,当向一个已满的StringBuilder添加字符时,其会自动申请内存进行扩容
StringBuilder和 String 相比,给String重新赋值的时候,是重新指向一个对象,原来的对象不再被变量指向,就会被垃圾回收器回收,如果String拼接10000次,那就会有10000个新对象。而StringBuilder引用的数据则是以数组的形式存放,重新赋值的时候会在原来的地址上动态的修改,不会产生多余的对象,也不需要被垃圾回收器回收。
//创建StringBuilder对象
StringBuilder sb = new StringBuilder();
//1添加字符
sb.Append("张三");
sb.AppendLine("李四");
//2Insert 在指定位置添加数据
sb.Insert(0,"tea");
//3Remove 移除 从指定位置开始 移除指定数量的字符
sb.Remove(0,3);
//4 Clear() 清空字符串
sb.Clear();
//5Replace() 使用指定符号替换匹配上的字符
sb.Replace("张三", "***");
2035



被折叠的 条评论
为什么被折叠?



