C#语法笔记(三)

.NETFramework类库

数值、日期和字符串处理

1、Math类和数学函数

Abs, Max, Sqrt, Exp, Pow, Log等。Round, Floor, Ceiling可以舍入到整数或确定精度。

2、Random类和随机函数

Random   r = new Random(); //空构造函数,默认使用当前系统时间作为seed

r.Next() //产生非负随机整数

r.Next(非负随机整数A) //产生大于等于0,小于A的随机整数

r.Next(整数A, 整数B) //产生大于等于A, 小于B的随机整数

r.NextDouble() //产生大于等于0.0小于1.0的随机双精度浮点数

3、日期和时间处理

C#中一般使用System.DateTime类表示和处理日期。如果涉及时区,则使用System.TimeZoneInfo和System.DateTimeOffset类。DateTime属于System的命名空间。

DateTime  dt1 = new DateTime(2009, 7, 16);  //2009 / 07 / 16

DateTime  dt2 = new DateTime(2009, 7, 18, 18, 30, 15)  // 2009 / 07 / 18  18:30:15

DateTime包含很多字段,如Today, Day, Hour, Second和方法  如 Add, AddDays等

Parse方法:静态方法,将日期和时间的指定字符串表示形式转换为其等效的DateTime

string myDateTimeValue = "2/16/1992  12:15:12";

DateTime myDateTime = DateTime.Parse(myDateTimeValue);myDateTime的值为: 1992-2-16 12:15:12

TryParse方法:静态方法。将日和和事件的指定字符串表示形式转换为其等效的DateTime

DateTime  myDateTime;

DateTime.TryParse(myDateTimeValue,  myDateTime); //myDateTime的值为: 1992-2-16 12:15:12

4、字符串处理

C#字符串是Unicode字符的有序集合,Unicode字符使用UTF-16编码,编码的每个元素的数值都使用一个System.Char对象表示,Char占两个字节。

string字符串是用string关键字声明的字符数组,使用双引号声明。      string  s = "hello world";

字符串可以包含转义字符(如"\t",  "\n")。如果希望包含反斜杠,则它前面必须还有另一个反斜杠。带@符号(原义字符串)时,字符串构造函数将忽略转义符合分行符。在原义字符串中,用另一个双引号字符转义双引号字符。

string  hello = "hello\nworld" ;  //转义字符\n 有效

string  filePath1 = "\\\\My Document\\"  //等效于  \\My Document\

string filePath2 = @"\\My Documents\" //等效于  \\My Documents\

string s =  @"you  say ""goodbye"""; //等效于  you  say "goodbye"

string 对象为只读的,因为一旦创建了该对象,就不能修改该对象的值。有些字符串操作看来似乎修改了string对象,但实际上是返回一个包含修改内容的新的string对象。如果需要修改字符串对象的实际内容,可以使用System.Text.StringBuilder类。

5、字符编码

默认情况下,公共语言运行库使用UTF-16编码(Unicode转换格式,16位编码形式)表示字符。使用编码/解码,可以实现字符编码在UTF-16编码方式和其他编码方式(如ASCII编码、UTF-8编码)之间的转换。

System.Text命名空间中对字符进行编码和解码最常用的类为

ASCII 编码 System.Text.ASCIIEncoding  将字符与ASCII字符相互转换

UTF-16编码 System.Text.UnicodeEncoding将其他编码与UTF-16之间进行转换

UTF-8编码 System.Text.UTF8Encoding将其他编码与UTF-8之间进行转换

多种编码                 System.Text.Encoding 将字符与指定的各种编码相互转换

            Encoding ascii = Encoding.ASCII;
            Encoding unicode = Encoding.Unicode;
            string unicodeString = "字符串包含unicode字符";
            //将string转换为byte[]
            byte[] unicodeByte = unicode.GetBytes(unicodeString);
            //执行一个编码转换为另一个编码
            byte[] asciiByte = Encoding.Convert(unicode, ascii, unicodeByte);
            //将byte[] 转换为char[],再转换为string
            char[] asciiChars = 
                new char[ascii.GetCharCount(asciiByte, 0, asciiByte.Length)];
            ascii.GetChars(asciiByte, 0, asciiByte.Length, asciiChars, 0);
            string asciiString = new string(asciiChars);

6、正则表达式

正则表达式提供了功能强大、灵活高效的方法来处理文本:快速分析大量文本以找到特定的字符模式;提取、编辑、替换或删除文本字符串;将提取的字符串添加到集合以生成报告。正则表达式广泛应用于各种字符串处理程序,例如HTML处理、日志文件分析和HTTP报头分析。

正则表达式语言:

正则表达式是由普通字符(例如a-z)以及特殊字符(成为元字符,例如 点号,\,?,*, +, {, } , (, ), [, ]等)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串,正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。正则表达式使用的常用字符和匹配模式如下:

字符 匹配模式
\ 将下一个字符标记为特殊字符或字面值,例如 “\n"与换行符匹配, "\\"与 ”\"匹配。
^ 匹配输入的开始位置
$ 匹配输入的结尾
 * 匹配前一个字符0次或几次。例如 "zo*”可以匹配"zo", "zoo"等
+ 匹配前一个字符一次或多次。例如"zo+"可以匹配 "zoo",但不能匹配"zo"
? 匹配前一个字符0次或1次。例如, "a? ve?" 可以匹配 "never"中的ve
 . 匹配换行符以外的任意字符
(pattern) 与模式匹配并记住匹配。匹配的字符串可以从作为结果的Matches集合中使用 Item[0] ....[n]取得。
如果要匹配括号字符 ( 和 ), 可使用 "\(" 或 "\)"
x|y 匹配x或y。例如 g|food  可匹配 “g"或 "food",  "(g|f)ood" 匹配 "good"或 "food"
{n} n为非负整数,匹配恰好n次,例如,"o {2}"不能与 "Bod"中的"o"匹配,但可以与 good 的前两个o匹配
{n , } n为非负的整数,匹配至少n次。例如  o {2 , }   匹配  fooood中所有的o,  o{1 , }等价于 "o+",  o{0, }等价于o*
{n, m} m和n均为非负整数,匹配至少n次,最多m次。
[xyz] 一个字符集,与括号中字符的其中之一匹配。例如"[abc]" 匹配 "plain"中 的 a
[ ^xyz] 一个否定的字符集,匹配不在括号中的任何字符。例如 "[abc]"可以匹配“plain”中的 p, l, i, n
[a-z] 表示某个范围内的字符,与指定区间内的任何字符匹配。例如 “[a-z]”匹配 "a"与"z"之间的任何一个小写字母字符
[^ m -z] 否定的字符区间。与不在指定区间内的字符匹配
正则表达式 \w \s \d \b
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值