码迷,mamicode.com
首页 > Windows程序 > 详细

扣响C#之门笔记-第十九章

时间:2016-08-17 01:25:58      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:

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类

技术分享

 

扣响C#之门笔记-第十九章

标签:

原文地址:http://www.cnblogs.com/Just-For-U/p/5778382.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!