8.C# —— 随机数、DateTime时间、字符串
一、C# 随机数伪随机 安全随机1. 核心概念计算机中没有真正的随机数生成的都是伪随机数通过算法 种子计算得出。种子相同 → 生成的随机数序列完全相同不指定种子 → 默认使用系统当前时间作为种子随机性更好2. 常用随机数生成方式1Random 类基础随机数推荐日常使用// 1. 指定种子种子相同随机数相同 Random r1 new Random(10); Console.WriteLine(r1.Next()); // 2. 不指定种子默认时间为种子推荐 Random r2 new Random(); // 生成指定范围随机数 [min, max) 包含最小值不包含最大值 Console.WriteLine(r2.Next(10, 21)); // 10~20 Console.WriteLine(r2.Next(21)); // 0~20 // 3. 循环生成多个随机数重点Random 不要写在循环内 Random r3 new Random(); for (int i 0; i 4; i) { Console.WriteLine(r3.Next()); // 正确用法 }2随机生成字母 / 字符串// 方式1从指定字符串中随机取字符 string str qwertyuiopasdfghjklzxcvbnm; Random r4 new Random(); // 生成4位随机字母 string res ; for (int i 0; i 4; i) { res str[r4.Next(str.Length)]; } Console.WriteLine(res); // 方式2通过 ASCII 码生成 a-z(97~122) string res2 ; for (int i 0; i 4; i) { res2 (char)r4.Next(97, 123); } Console.WriteLine(res2);3高级随机数了解GUID全球唯一标识符几乎不会重复适合生成订单号、唯一 IDConsole.WriteLine(Guid.NewGuid());RNGCryptoServiceProvider加密级安全随机数适合密码、密钥场景RNGCryptoServiceProvider rng new RNGCryptoServiceProvider(); byte[] bs new byte[10]; rng.GetBytes(bs); Console.WriteLine(BitConverter.ToString(bs));3. 避坑指南循环生成随机数时不要在循环内 new Random ()会因为执行时间过短导致种子相同随机数重复。二、DateTime 日期时间操作1. 核心作用DateTime是结构体用于存储、获取、格式化系统日期和时间。2. 获取当前时间 拆分年月日时分秒// 获取当前系统时间 DateTime now DateTime.Now; Console.WriteLine(now); // 拆分时间分量 Console.WriteLine(now.Year); // 年 Console.WriteLine(now.Month); // 月 Console.WriteLine(now.Day); // 日 Console.WriteLine(now.Hour); // 小时(24制) Console.WriteLine(now.Minute); // 分钟 Console.WriteLine(now.Second); // 秒 Console.WriteLine(now.Millisecond); // 毫秒 Console.WriteLine(now.DayOfWeek); // 星期英文 Console.WriteLine((int)now.DayOfWeek); // 星期数字周日0 Console.WriteLine(now.DayOfYear); // 当年第几天3. 时间格式化字符串重点通过ToString(格式符)自定义时间显示格式格式符含义示例yyyy4 位年份2026MM2 位月份05dd2 位日期21HH24 小时制14hh12 小时制02mm分钟30ss秒59fff毫秒123DateTime now DateTime.Now; Console.WriteLine(now.ToString(yyyy-MM-dd HH:mm:ss)); Console.WriteLine(now.ToString(今年是yyyy年MM月dd日 HH:mm:ss));4. 时间戳秒 / 毫秒时间戳当前时间距离1970-01-01 00:00:00的秒数 / 毫秒数常用于跨平台时间传输。DateTime now DateTime.Now; DateTimeOffset offset new DateTimeOffset(now); // 1. 时间 → 时间戳 long second offset.ToUnixTimeSeconds(); // 秒 long millisecond offset.ToUnixTimeMilliseconds(); // 毫秒 // 2. 时间戳 → 时间 DateTime time DateTimeOffset.FromUnixTimeSeconds(1779347102).LocalDateTime; Console.WriteLine(time);三、时间对象的计算和比较1. 时间加减计算DateTime提供专用方法计算时间不会修改原时间返回新时间DateTime now DateTime.Now; // 加法 now now.AddYears(1); // 加1年 now now.AddMonths(2); // 加2月 now now.AddDays(3); // 加3天 now now.AddHours(1); // 加1小时 // 减法传入负数 now now.AddYears(-1); // 减1年2. 时间比较DateTime支持直接用 比较运算符重载if (DateTime.Now new DateTime(2027, 5, 24)) { Console.WriteLine(已过指定日期); } else { Console.WriteLine(未到指定日期); }3. 时间间隔TimeSpan两个时间相减得到TimeSpan时间差对象DateTime end new DateTime(2026, 5, 21, 16, 0, 0); TimeSpan span end - DateTime.Now; // 获取时间差分量 Console.WriteLine(span.Days); // 天数 Console.WriteLine(span.Hours); // 小时 Console.WriteLine(span.Minutes); // 分钟 Console.WriteLine(span.Seconds); // 秒四、string 字符串常用方法高频使用1. 字符串定义方式// 1. 普通定义 string s1 Hello C#; // 2. 换行转义 \r\n string s2 第一行\r\n第二行; // 3. 原样字符串保留格式无需转义 string path C:\Users\Desktop; // 4. new 方式重复字符 string s3 new string(c, 4); // cccc2. 字符串常用操作方法方法作用示例string.Concat(a,b)拼接多个字符串string.Concat(张,三)→张三string.Join(分隔符, 数组)用分隔符连接字符串string.Join(-,a,b)→a-bToLower()转小写ABC.ToLower()→abcToUpper()转大写abc.ToUpper()→ABCStartsWith(值)判断是否以指定字符开头返回 boolEndsWith(值)判断是否以指定字符结尾返回 boolIndexOf(值)查找字符索引不存在返回 - 1abc.IndexOf(b)→1Substring(起始,长度)截取字符串abcde.Substring(1,2)→bcReplace(旧,新)替换字符abc.Replace(a,*)→*bcSplit(分隔符)分割字符串为数组a-b-c.Split(-)→[a,b,c]Trim()去除首尾空格 张三 .Trim()→张三TrimEnd()去除尾部空格-3. 完整示例string str 尉氏县自来水污染上央视新闻 ; // 去除空格 str str.Trim(); // 判断开头 Console.WriteLine(str.StartsWith(尉)); // 查找索引 Console.WriteLine(str.IndexOf(县)); // 截取字符串 Console.WriteLine(str.Substring(3, 4)); // 替换 Console.WriteLine(str.Replace(污染, **)); // 分割 string arr a-b-c-d.Split(-);总结随机数日常用Random不写在循环内唯一 ID 用GUID安全场景用加密随机数DateTime核心掌握获取时间、格式化、时间戳转换时间计算用AddXXX方法加减用TimeSpan计算时间差字符串Substring、Replace、Split、Trim、IndexOf是工作中最常用的方法。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2633070.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!