19.1 sting 类
sting 类的基础用法:
(1).NET为sting设计了索引器,因此可以像数组那样访问字符串;
(2)Length属性表示字符串长度(是string类唯一的属性)
(3)"="运算符将元字符串的引用,传递给目标字符串,从而使两个变量指向同一个字符串;
(4)字符串不可改变,当我们改变字符串的值时,系统会为字符串重新分配引用空间,并将值放进去;(因此不会影响原引用地址的内容)
(5)string.Copy用于复制字符串内容,(直接复制值,非引用地址)
(6)CopyTo(原字符串开始位置,目标字符数组,目标字符数组开始位置,复制字符个数),用于复制部分字符到字符组
class Program { static void Main(string[] args) { string s1 = "How are you"; Console.WriteLine(s1[0]); //(1).NET为C#设计索引器,因此可以像数组那样访问字符串 Console.WriteLine(s1.Length);//(2)Length属性表示字符串长度(是string类唯一的属性) for (int i = 0; i < s1.Length; i++) { Console.Write(s1[i]); } Console.ReadKey(); Console.WriteLine("******************"); string s2 = s1; //(3)"="运算符将元字符串的引用复制了一份,传递给目标字符串,从而使两个变量指向同一个字符串; s1 = "How do you do";//(4)但是字符串不可改变,当我们改变字符串的值时,系统会为字符串重新分配引用空间,因此不会影响原引用地址的内容 Console.WriteLine(s1); Console.WriteLine(s2); Console.ReadKey(); Console.WriteLine("******************"); string ss1 = "How do you do"; string ss2 = string.Copy(ss1); //(5)string.Copy用于复制字符串内容,(直接复制值,非引用地址) Console.WriteLine(ss2); Console.WriteLine("******************"); string sss1 = "someone"; char[] c={‘*‘,‘*‘,‘*‘,‘*‘,‘*‘,‘*‘}; sss1.CopyTo(0, c, 0, 6); //(6)CopyTo(原字符串开始位置,目标字符数组,目标字符数组开始位置,复制字符个数),用于复制部分字符到字符组 foreach (var item in c) { Console.WriteLine(item); } Console.ReadKey(); Console.WriteLine("******************"); } }
比较字符
(1)“==”可用于比较两个字符串,相等返回true,否则返回false;
(2)Equals 可用于比较两个字符串,相等返回true,否则返回false
(3)Equals方法也有一个静态的重载;
(4)CompareTo 用于比较两个字符串的大小,大于返回值1,等于返回0,小于返回-1
(5)StartsWith 判断字符串是否以某个字符串开头
(6)EndsWith 判断字符串是否以某个字符串结尾
class Program { static void Main(string[] args) { string s1 = "Hello"; string s2 = "Hello"; if (s1==s2) //(1)“==”可用于比较两个字符串,相等返回true,否则返回false { Console.WriteLine("s1==s2"); } Console.ReadKey(); if (s1.Equals(s2)) { Console.WriteLine("s1 Equals s2");//(2)Equals 可用于比较两个字符串,相等返回true,否则返回false } Console.ReadKey(); Console.WriteLine(string.Equals(s1, s2));//(3)Equals方法也有一个静态的重载, Console.WriteLine("*******************"); string s6 = "better"; string s7 = "best"; switch (s6.CompareTo(s7)) //(4)CompareTo 用于比较两个字符串的大小,大于返回值1,等于返回0,小于返回-1 { case -1: { Console.WriteLine("-1"); break; } case 1: { Console.WriteLine("1"); break; } case 0: { Console.WriteLine("0"); break; } } Console.ReadKey(); Console.WriteLine("*******************"); if (s6.StartsWith("bet"))//(5)StartsWith 判断字符串是否以某个字符串开头 { Console.WriteLine("StartsWith bet"); } if (s6.EndsWith("er")) { Console.WriteLine("EndsWith er");//(6)EndsWith 判断字符串是否以某个字符串结尾 } Console.ReadKey(); } }
查找字符串
(1)IdexOf用于查找 某个字符,或者字符串第一次出现的位置(如果没有就放回-1);
(2)IdexOf加数字表示在原字串数字以后开始查找;
(4)LastIndextOf,某个字符,或者字符串最后一次出现的位置(如果没有就放回-1);
(4)LastIndextOf加数字表示在原字串数字以后开始查找
class Program { static void Main(string[] args) { string s = "you love to hear youself dance you"; int i = s.IndexOf(‘l‘); //(1)IdexOf用于查找 某个字符,或者字符串第一次出现的位置(如果没有就放回-1); int j = s.IndexOf("you"); Console.WriteLine(i); Console.WriteLine(j); int ii = s.IndexOf(‘l‘,6); //(2);加数字表示在原字串数字以后开始查找 int jj = s.IndexOf("you",2); Console.WriteLine(ii); Console.WriteLine(jj); Console.ReadKey(); Console.WriteLine(s.LastIndexOf(‘y‘));//(3)LastIndextOf,某个字符,或者字符串最后一次出现的位置(如果没有就放回-1); Console.WriteLine(s.LastIndexOf("you"));//(4)LastIndextOf加数字表示在原字串数字以后开始查找 Console.ReadKey(); } }
拆分修改字符串:
(1)Substring(x),从字符串位置x开始一直到结尾截取字符串
(2)Substring(x,y),从字符串位置x开始,截取y个长度的字符串
(3)Split(分隔字符数组X) :以X为分隔符,将字符串拆分为字符串数组
(4)ToUpper()将字符串转为大写
(5)ToLower将字符串转为小写
(6)Insert(X,Y),在字符串位置X前插入字符串Y
(7)Replace(X,Y),将字符串中的X字符替换为Y
(8)Remove(X)将字符串中的X位置后面字符删除
class Program { ///截取字符串 static void Main(string[] args) { string s = "I LOVE YOU"; Console.WriteLine(s[2]); Console.WriteLine(s.Substring(1)); //(1)Substring(x),从字符串位置x开始一直到结尾截取字符串 Console.WriteLine(s.Substring(2, 5));//(2)Substring(x,y),从字符串位置x开始,截取y个长度的字符串 Console.ReadKey(); char[] oper={‘ ‘}; string[] c = s.Split(oper); //(3)Split(分隔字符数组X) :以X为分隔符,将字符串拆分为字符串数组 foreach (var item in c) { Console.WriteLine(item); } Console.ReadKey(); string name = "ZhangkAiNeng"; Console.WriteLine(name.ToUpper());//(4)ToUpper()将字符串转为大写 Console.WriteLine(name.ToLower());//(5)ToLower将字符串转为小写 Console.ReadKey(); string n = "*****"; Console.WriteLine(n.Insert(n.Length, "@"));//(6)Insert(X,Y),在字符串位置X前插入字符串Y Console.WriteLine(n.Replace("*", "#"));//(7)Replace(X,Y),将字符串中的X字符替换为Y Console.WriteLine(n.Remove(2));//(8)Remove(X)将字符串中的X位置后面字符删除 Console.ReadKey(); } }
9.2 SringBulder 类;
SringBulder 类是可以修改的字符串; StringBuilder s = new StringBuilder();
(1)Capacity 用于获取为 StringBuilder的容量
(2)Length 用于表示StringBuilder的字符实际占用长度
(3)EnsureCapacity 用于增加Capacity,不必记忆其增加长度规则
(4)Length 可以限制StringBuilder长度,如果字符实际长度其长度,后面的字符就被截断,不够就加空格;
(5)Append 方法用于在StringBuilder 尾部追加字符
(6)Insert(x,y) 在字符串x位置前面插入字符串y
(7)Replace(x,y) 将StringBuilder中的在X字符串替换为Y字符串;
(8)Remove(x,y) 将StringBuilder中的在X开始位置,删除Y个字符;
class Program { static void Main(string[] args) { StringBuilder s = new StringBuilder(); Console.WriteLine(s.Capacity);//(1)Capacity 用于获取为 StringBuilder的容量 Console.WriteLine(s.Length);//(2)Length 用于表示StringBuilder的字符实际占用长度 s.EnsureCapacity(17);//(3)EnsureCapacity 用于增加Capacity,不必记忆其增加长度规则 Console.WriteLine(s.Capacity); Console.WriteLine(s.Length); //(4)Length 可以限制StringBuilder长度,如果字符实际长度其长度,后面的字符就被截断,不够就加空格 StringBuilder ss = new StringBuilder("Hello Wrold"); ss.Length = 4; Console.WriteLine(ss); //(5)Append 方法用于在StringBuilder 尾部追加字符 ss.Append(" World"); Console.WriteLine(ss); //(6)Insert(x,y) 在字符串x位置前面插入字符串y ss.Insert(ss.Length, " I love you !!!"); Console.WriteLine(ss); //(7)Replace(x,y) 将StringBuilder中的在X字符串替换为Y字符串; ss.Replace("I","YOU"); Console.WriteLine(ss); //(8)Remove(x,y) 将StringBuilder中的在X开始位置,删除Y个字符; ss.Remove(ss.Length-3,3); Console.ReadKey(); } }
19.3 Char 类:待补充
19.4 正则表达式;
19.4.1 通配符
(1)通配符: \d,\w,\s,.,用来通配指定类型的字符;
static void Main(string[] args) { string g = @"Kitty is 16 years old\n Kelly is 18 years old\n Merry is 18 years old\n Karen is 20 years old\n"; //(1).通配符: \d,\w,\s,.,用来通配指定类型的字符; //Regex 类: Regex r = new Regex(@"K.... is 1\d years old"); //\d 数字(0-9),\w 字母(大小写),\s 任何空白 ..... MatchCollection m = r.Matches(g); foreach (var item in m) { Console.WriteLine(item); } Console.WriteLine("*****************"); }
19.4.2 可选字符
(1)[]可选字符集:用来指定某个位置上可以出现的字符范围
class Program { static void Main(string[] args) { string g = @"Kitty is 16 years old\n Kelly is 18 years old\n Merry is 18 years old\n Karen is 20 years old\n"; : Regex r = null; r = new Regex(" [A-Z][a-z][a-z][a-z][a-z] is 18 years old"); //(2).[]可选字符集:用来指定某个位置上可以出现的字符范围 MatchCollection m1 = r.Matches(g); foreach (var item in m1) { Console.WriteLine(item); } Console.WriteLine("*****************"); r = new Regex(@".........[1][6|8] years old"); //(3) []中可以加|(或)&(与)限定可选可选内容 MatchCollection m2 = r.Matches(g); foreach (var item in m2) { Console.WriteLine(item); } Console.ReadKey(); } }
19.4.2 正则表达式中的逻辑运算;
r = new Regex(@".........[1][6|8] years old"); //(3) []中可以加|(或)&(与)限定可选可选内容 MatchCollection m2 = r.Matches(g);
19.4.3 数量限定
(1)数量限定符 * :表示将之前的字符(最近的一个)重复0次或者多次;[0 to +∞]
(2)数量限定符+:表示将之前的字符(最近的一个)重复1次或者多次;[1 to +∞]
(3)数量限定符? :表示将之前的字符(最近的一个)重复1次或者多次;[0 to 1]
(4)数量限定符{n}表示将之前的字符(最近的一个)重复n次;[n to n]
(5)数量限定符{n,}表示将之前的字符(最近的一个)重复n或者n+次;[n to +∞]
(6)数量限定符{n,m}表示将之前的字符(最近的一个)重复n 到m 次;[n to n]
(7)数量限定符也可以限定多个字符,或者字符串(用()括起来)
(8)懒惰运算符?,用于加载数量限定符后,表示尽可能少循环
(9)数量限定符还可以和通配符号结合使用.如“\w*“表示匹配不限数量的字符
class Program { static void Main(string[] args) { string g = @"lg log loog looog loooog"; ///数量限定符 // (1)数量限定符 * :表示将之前的字符(最近的一个)重复0次或者多次;[0 to +∞] //Regex r = new Regex("lo*g"); //(2)数量限定符+:表示将之前的字符(最近的一个)重复1次或者多次;[1 to +∞] // Regex r = new Regex("lo+g"); //(3)数量限定符? :表示将之前的字符(最近的一个)重复1次或者多次;[0 to 1] // Regex r = new Regex("lo?g"); //(4)数量限定符{n}表示将之前的字符(最近的一个)重复n次;[n to n] // Regex r = new Regex("lo{1}g"); //(5)数量限定符{n,}表示将之前的字符(最近的一个)重复n或者n+次;[n to +∞] // Regex r = new Regex("lo{1,}g"); //(6)数量限定符{n,m}表示将之前的字符(最近的一个)重复n 到m 次;[n to n] //Regex r = new Regex("lo{0,4}g"); //(7)数量限定符也可以限定多个字符,或者字符串(用()括起来) // g = @"lg leog leoeog leoeoeog leoeoeoeog"; //Regex r = new Regex("l(eo){0,4}g"); //(8)懒惰运算符?,用于加载数量限定符后,表示尽可能少循环 // Regex r = new Regex("lo*?g"); //(9)数量限定符还可以和通配符号结合使用.如“\w*“表示匹配不限数量的字符 //Regex r = new Regex(@"l\w*g"); MatchCollection m = r.Matches(g); foreach (var item in m) { Console.WriteLine(item); } Console.ReadKey(); } }
19.4.4 定位符
定位符用于指定正则表达式匹配的位置
(1)定位符^:表示从字符头部开始匹配(放在最前面)
(2)定位符$:表示从字符头部开始匹配(放在最后)
(3)定位符\b:表示从字符边界匹配(常用于获取指定字符开头或者结尾的字符)(可放在开头或者结尾)
class Program { static void Main(string[] args) { //定位符用于指定正则表达式匹配的位置 string s = "year1990 year1991 year1992 year1993 year1994"; //(1)定位符^:表示从字符头部开始匹配(放在最前面) // Regex r = new Regex(@"^\w\w\w\w\d\d\d\d"); //(2)定位符$:表示从字符头部开始匹配(放在最后) //Regex r = new Regex(@"\w\w\w\w\d\d\d\d$"); //(3)定位符\b:表示从字符边界匹配(常用于获取指定字符开头或者结尾的字符)(可放在开头或者结尾) //s = "start student lisent best east";//字符边界开头匹配 // Regex r = new Regex(@"\bst\w*");////字符边界结尾匹配 Regex r = new Regex(@"\w*st\b"); MatchCollection m = r.Matches(s); foreach (var item in m) { Console.WriteLine(item); } Console.ReadKey(); } }
19.5 Regex类