张磊(Avraber)

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

string temp = string.Empty;
(1)字符串是引用类型; 正常的针对1个字符串的操作都是Str1.就是实例化出来的东西然后点,对多个字符串就string.(点)
(2)类需要使用new <构造方法>()来进行实例化,同样字符串也行
string <name> = new string(new char[] {...});

各类常用构造方法的重载
   <1>char[] value
char [] c1={'1','2','3','4','5'};
string str1 = new string(c1);//把char[]中的元素变为字符串,此时字符串Str1="12345"
   <2>char c,int count
string str2=new string('a',3);//把字符‘a’,按照后面的int类型复制指定的次数,此时str2="aaa"
(3)字符串是不可变的,在内存中字符串一旦生成,将不会改变
   即使之前使用的str1 + str2也只是生成了另一个字符串
   要修改字符串,通过这个方法
   <strName>.ToCharArray();
该方法会将字符串,变成一个char类型的数组,因此需要用一个char类型的数组接收
    char[] ch = <strName>.ToCharArray();
    // 处理字符数组,完成修改目的
    <strName> = new string(ch);
例:
            string str3 = "你好123";
            char[] c2 = str3.ToCharArray();
            c2[0] = '我';
            str3 = new string(c2);//这时候str3中存储的为“我好123”
(4)字符串有一个很特殊的使用方式,当做数组进行遍历
            string str4 = "我的string学习";
            for (int i = 0; i < str4.Length; i++)
            {
                Console.WriteLine(str4[i]);
            }//也就说可以直接取得字符串中的值,如s[3]=t;
(5)字符串大小写(字符)
        string <strName>.ToUpper();      //    string s1 = str1.ToUpper();
        string <strName>.ToLower();     //  string s2 = str2.ToLower();
     在字符串转换成统一的大写或者小写时,再进行比较。
(6)移除首尾指定字符(修正)
            string <strName>.Trim();        // 移除首尾的空格
            string <strName>.TrimStart();    // 移除开头的空格
            string <strName>.TrimEnd();        // 移除结尾的空格
        如果要指定移除的内容,可添加一个char数组作为参数
            string <strName>.Trim(char[] ch);
     例子: string str = "   123   ";
            string str1 = str.Trim();
(7)字符串的比较
<1>Compare()方法
        方法原型
            int i = string.Compare(string str1,string str2);
        按照字典排序比较
            当str1 > str2时,返回1
            当str1 = str2时,返回0
            当str1 < str2时,返回-1
        注:int string.Compare(string str1,string str2,bool ignoreCase)表示是否区分大小写
            这里true表示不区分大小写,默认为false
            // string.Compare(str1, str2, true);
<2>Equals()方法
        方法原型
            bool <strName>.Equals(string str);
        比较如果相等返回true,否则返回false
       
        注(重载方法):bool <strName>.Equals(string str, StringComparison.OrdinalIgnoreCase)表示不区分大小写
        //bool isright = str1.Equals(str2, StringComparison.OrdinalIgnoreCase);
        注:如果仅仅比较两个字符串是否相等,还是使用“==”比较简单
    例如:
        Console.WriteLine("请输入一个字符串");
        string str1 = Console.ReadLine();
        Console.WriteLine("请输入第二个字符串");
        string str2 = Console.ReadLine();
        // 不考虑大小写的比较
        bool isEqual = str1.ToLower() == str2.ToLower();
(8)字符串的合并与分割
<1>合并Join方法
        将数组strArr中的内容拼接成一个字符串,并在对应数组的每两项间添加分隔符str
            string.Join(str,strArr);
        方法原型
            string string.Join(string str,string[] strArr);
            // string[] str3 = { "老翟", "老董", "老庞" };   定义任何类型的数组都行
            //string  str4=string.Join("|",str3);
<2>    字符串分割Split方法
        方法原型:
            string[] <strName>.Split(params char[](就是一些符号) separator);
        将字符串<strName>以separator数组中的字符分割,分割后得到的内容存到一个数组中
        例:
            // 分析这句话,提取这句话的单词
            string str = "Hello, How are you?";
            string[] words = str.Split(' ',',','?');
       
        注:返回的数组中可以有空字符串项,如果要去掉这些空字符串项,可以使用
            string[] <strName>.Split(char[] separator,StringSplitOptions.RemoveEmptyEntries);

        因此例子可改为
            string str = "Hello, How are you?";
            string[] words = str.Split(new char[]{' ',',','?'},StringSplitOptions.RemoveEmptyEntries);
(9)字符串查找:
<1>Contains方法   //查看字符串是否包含所查找的对象,有则返回True,否则返回False
            方法原型:
                bool <strName>.Contains(string str);
            表示字符串<strName>中是否包含str,如果包含,返回true,否则返回false
        例:
            Console.WriteLine("随便输入一串字母");
            string str = Console.ReadLine();
            if(str.Contains("abc"))
            {
                Console.WriteLine("字符串{0}中包含{1}",str,"abc");
            }
            else
            {
                Console.WriteLine("字符串{0}中不包含{1}",str,"abc");
            }
<2>    IndexOf方法  //返回查找的对象所在的位置,没有返回-1
            常用的两种形式:
                int <strName>.IndexOf(string str);                    // 从头开始,出现第一次的下标
                int <strName>.IndexOf(string str,int startIndex);    // 从startIndex开始,出现第一次的下标
                //int index = str.IndexOf("孙燕子",10);             //从第10号位去找,略过前面。
            如果没有找到则返回-1
        例:
            string str = "C#语言基础,讲师蒋坤";
            int res1 = str.IndexOf("蒋坤");  
            int res2 = str.IndexOf("蒋 坤");
            Console.WriteLine(res1 + "\n" + res2);
            注:LastIndexOf方法从最后一个开始匹配
            int str3 = str1.LastIndexOf("张磊");
           
            string str = @"D:\Music\孙燕姿_专辑\孙燕姿_天黑\孙燕姿_专辑\孙燕姿_\孙燕姿_专辑\孙燕姿_天黑黑天黑黑黑.mp3";
            int index = str.IndexOf("孙燕子", -1 + 1);   //查找第一个孙燕姿
            int index1 = str.IndexOf("孙燕姿", index + 1);  //自上一个寻找下一个
            int index2 = str.IndexOf("孙燕姿", index1 + 1);
            把这个思想写成循环
            int index = -1;
            do
            {
                index = str.IndexOf("孙燕姿", index + 1);
                if (index != -1)
                {
                    Console.WriteLine(index);
                }
            }
            while (index != -1);
<3>IndexOpAny方法
            方法原型:
                int <strName>.IndexOfAny(char[] anyOf);
            寻找字符数中的所有内容,返回第一个的位置
            同样有两个参数的重载
                int <strName>.IndexOfAny(char[] anyOf, int startIndex);
                          01234567890123
            string str = "1mm2mn3nd45ff6";
            char[] nums = {'1','2','3','4','5','6'};   //只要这数组里面的元素出现在字符串中,就返回
            int index = str.IndexOfAny(nums,4);   //4是指定位置Startindex
(10)求子字符串
方法原型
        string <strName>.Substring(int startIndex, int length);
        从字符串<strName>的startIndex位置开始提取长度为length的字符串,如果省略第二个参数表示一直到最后
            string data = "2012年6月29日";
            int index = data.IndexOf('月'); //查询月的位置
            string temp = data.Substring(index + 1, 2);  //输出月后面的字符,长度为2,则是输出29
->走马灯
            string str = "我是一个走马灯";
            while (true)
            {
                Console.Clear();
                string head = str[0].ToString();  //获得首个字符
                string body = str.Substring(1);   //获得余下字符串
                str = body + head;               //余下字符串跑到前面去
                Console.WriteLine(str);
                System.Threading.Thread.Sleep(200);
            }
(11)格式化字符串
            string.Format();
            Console.WriteLine("{0}{1}{2}={3}", 1, "+", 2, 3);
            string str = string.Format("{0}{1}{2}={3}", 1, "+", 2, 3);
(12)字符串的插入、移除和替换
<1>插入
        在字符串<strName>的index位置上插入str,原来的字符依次后移,变成一个新的字符串
            <strName> = <strName>.Insert(index,str);
        方法原型为:
            string <strName>.Insert(int index, string str);
            //string str = "012345";
            //str = str.Insert(3, "我");
            //结果:012我345
   
<2> 移除
        在字符串<strName>中移除从startIndex开始,长度为length的字符串,剩下的字符按原序合并为一个新的字符串
            <strName> = <strName>.Remove(startIndex,length);
        方法原型为:
            string <strName>.Remove(int startIndex, int length);
       
        注:如果省略第二个参数,将移除startIndex后的所有字符串
            //string str = "012345";
            //str = str.Remove(3,1);
            //结果:01245
<3> 替换
        将字符串<strName>中的oldChar替换为newChar
            <strName> = <strName>.Replace(oldChar,newChar);
        方法原型:
            string <strName>.Replace(char oldChar, char newChar);
        同样,这个替换的字符也可以是字符串
            string <strName>.Replace(string oldValue, string newValue);
             //string data = "2012年6月29日";
             //string temp = data.Replace("年", "-").Replace("月","-").Replace("日","");
             //结果2012-6-29
(13) 判断结束与开始
        判断字符<strName>串是否以某字符串开始或结束
            bool <strName>.StartsWith(string str);
            bool <strName>.EndsWith(string str);
例: string path = @"D:\123\456\happy2000.mp3";
            if (path.EndsWith(".mp3"))
            {
                Console.WriteLine("是MP3");
            }
            else
            {
                Console.WriteLine("不是mp3");
            }

             path.StartsWith("")//判断开始

posted on 2012-06-30 19:32  张磊(Avraber)  阅读(329)  评论(0编辑  收藏  举报