.NET字符串处理

    如何熟练掌握字符串的方法

    要学好C#中的字符串方法,必须要弄清楚方法名字的含义,然后逐个弄清楚方法的使用(每个方法最少参数的重载的用法),然后开始归纳。怎么归纳呢,个人建议,把那些差不多可以联系起来的方法统一归纳,一般这样,把增删该查放到一起,把字符串的比较放到一起比较,把字符串的拆分,和连接放到一起。接下来我们就来写下这些方法的介绍和案例。

1、字符串的定义

        语法:

                string <name>;

                <name> = <value>;

                或

                string <name> = <value>;

        字符串是引用类型,在定义

                string <name>;

        的时候在栈空间中,定义了一个<name>的空间,该空间存放一个地址

        当写到

                <name> = "The C# Programming Language";

        的时候,会在堆内存分配一个空间,存放字符串"The C# Programming Language",并将首地址赋值给<name>

        因此<name>指向定义的字符串

       

2、字符串的声明

        字符串string对应MSILCTS)中的String,实际上是一个类

        那么以前了解到,类需要使用new <构造方法>()来进行实例化,同样字符串也行(这里只介绍一种)

                string <name> = new string(new char[] {...});

        注:这里Stringstring得到的效果一样

       

        这里有个应用

                字符串是不可变的,在内存中字符串一旦生成,将不会改变

                即使之前使用的str1 + str2也只是生成了另一个字符串

                那么要修改字符串,怎么处理呢?

                        这里有个方法

                                <strName>.ToCharArray();

                        该方法会将字符串,变成一个char类型的数组,因此需要用一个char类型的数组接收

                例:修改一个字符串里面的内容

                        char[] ch = <strName>.ToCharArray();

                        // 处理字符数组,完成修改目的

                        <strName> = new string(ch);

3、字符串可以用索引访问

        字符串,原本就是排在一起的字符,C#提供了用“下标”(索引)来访问字符串中的字符

        例如:

                string str = "jiangkun";

                这里内存中将“j”分配编号0,“i”分配编号1,然后依次增加...

                因此,如果需要访问k,数一数,编号是5,所以可以这么来

                        char temp = str[5];

                那么得到的就是字符“k

       

        字符串也有一个Length属性,可以得到字符串的长度

4、常见的字符串方法

4.1        字符串大小写(字符)

                string <strName>.ToUpper();

                string <strName>.ToLower();

        例:在等待用户输入的时候,常常不考虑用户输入的用户名大小(或一个程序中规定使用的大小写)

                可以将用户的输入全部转换成小写、或大写再来进行比较

                如:

                Console.WriteLine("请输入用户名");

                string uid = Console.ReadLine().ToLower();

                // 再将uid与系统中的数据进行比较

4.2        移除首尾指定字符

                方法原型

                        string <strName>.Trim();                // 移除首尾的空格

                        string <strName>.TrimStart();        // 移除开头的空格

                        string <strName>.TrimEnd();                // 移除结尾的空格

                如果要指定移除的内容,可添加一个char数组作为参数

                        string <strName>.Trim(char[] ch);

       

        例:在用户输入的时候,一般不考虑输入两边的空格,而使用Trim()方法

4.3        字符串的比较(重点)

        Compare()方法

                方法原型

                        int 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

       

        Equals()方法

                方法原型

                        bool <strName>.Equals(string str);

                比较如果相等返回true,否则返回false

               

                注:bool <strName>.Equals(string str, StringComparison.OrdinalIgnoreCase)表示不区分大小写

       

        注:如果仅仅比较两个字符串是否相等,还是使用“==”比较简单

        例如:

                Console.WriteLine("请输入一个字符串");

                string str1 = Console.ReadLine();

                Console.WriteLine("请输入第二个字符串");

                string str2 = Console.ReadLine();

                // 不考虑大小写的比较

                bool isEqual = str1.ToLower() == str2.ToLower();

4.4        字符串的合并与分割

        合并Join方法

                将数组strArr中的内容拼接成一个字符串,并在对应数组的每两项间添加分隔符str

                        string.Join(str,strArr);

                方法原型

                        string string.Join(string str,string[] strArr);

       

        字符串分割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);

4.5 字符串查找

                Contains方法

                        方法原型:

                                bool <strName>.Contains(string str);

                        表示字符串<strName>中是否包含str,如果包含,返回true,否则返回false

                IndexOf方法

                        常用的两种形式:

                                int <strName>.IndexOf(string str);                                        // 从头开始,出现第一次的下标

                                int <strName>.IndexOf(string str,int startIndex);        // startIndex开始,出现第一次的下标

                        如果没有找到则返回-1

               

                IndexOpAny方法

                        方法原型:

                                int <strName>.IndexOfAny(char[] anyOf);

                        寻找字符数中的所有内容,返回第一个的位置

                       

                        同样有两个参数的重载

                                int <strName>.IndexOfAny(char[] anyOf, int startIndex);

4.6        求子字符串(多)

                方法原型

                        string <strName>.Substring(int startIndex, int length);

                从字符串<strName>startIndex位置开始提取长度为length的字符串,如果省略第二个参数表示一直到最后

4.7 字符串的插入、移除和替换

        4.7.1 插入

                在字符串<strName>index位置上插入str,原来的字符依次后移,变成一个新的字符串

                        <strName> = <strName>.Insert(index,str);

                方法原型为:

                        string <strName>.Insert(int index, string str);

       

        4.7.2 移除

                在字符串<strName>中移除从startIndex开始,长度为length的字符串,剩下的字符按原序合并为一个新的字符串

                        <strName> = <strName>.Remove(startIndex,length);

                方法原型为:

                        string <strName>.Remove(int startIndex, int length);

               

                注:如果省略第二个参数,将移除startIndex后的所有字符串

        4.7.3 替换

                将字符串<strName>中的oldChar替换为newChar

                        <strName> = <strName>.Replace(oldChar,newChar);

                方法原型:

                        string <strName>.Replace(char oldChar, char newChar);

                同样,这个替换的字符也可以是字符串

                        string <strName>.Replace(string oldValue, string newValue);

4.8 判断结束与开始

                判断字符<strName>串是否以某字符串开始或结束

                        bool <strName>.StartsWith(string str);

                        bool <strName>.EndsWith(string str);

注:字符串具有不可变性,对字符串的修改,实际上都是重新得到一个字符串,重新赋值

字符串的添加

            string s = "123456";

            string s1=s.Insert(0,"4");

            //还有一种就是在后面拼接s="123"+"abc"

            Console.WriteLine(s1);

字符串的删除

string s1=s.Remove(2);//表示从字符串第3个位置把后面删除了

字符串的修改 由于字符串是不可改性 可以先转成字节

            char[] ch=s.ToCharArray();

            for (int i = 0; i < ch.Length; i++)

            {

                ch[1] = '';

                Console.WriteLine(ch);

            }

  替换字符串

            string newStr=s.Replace("123", "一二三");

            Console.WriteLine(newStr);

            

            string str = "09信管,我来了,你们在哪里,09信管";

            char[] ch = new char[] {'' };

            //此实例中第一个匹配项的索引位置,在此处找到 anyOf 中的任意字符;否则,如果未找到 anyOf 中的字符,则为 -1

            int num=str.IndexOfAny(ch);

            Console.WriteLine(num);

            这个是从字符串后面开始查找,查到还回改字符串的位置

            int num=str.LastIndexOf("");

            Console.WriteLine(num);

            char[] ch = new char[] {'' };

            //查看一个或者多个字符 出现的位置

            int num=str.LastIndexOfAny(ch,str.Length-1,2);

            Console.WriteLine(num);

字符串的比较

            string s1 = "AbC123";

            string s2 = "abc123";

            if (s1.Equals(s2))

            {

                Console.WriteLine("字符串相等");

            }

            else

            {

                Console.WriteLine("字符串不相等");

            }

            if (s1 == s2)

            {

                Console.WriteLine("字符串相等");

            }

            else

            {

                Console.WriteLine("字符串不相等");

            }

            

字符串其他重要操作 字符串的分割

            1.0 split

string str = "张三|李四|王五|赵六";

char[] ch=new char[]{'|'};string[] strs=str.Split(ch, StringSplitOptions.RemoveEmptyEntries);//2.0字符串的连接string.Join()string s=string.Join(",",strs);3.0字符串格式问题FormatConsole.WriteLine(含有格式的坑填坑的数据列表)用法一样string str=string.Format("我是{0},你是{1}", "马上", "天天");Console.WriteLine(str);string s = string.Concat("123", "456", "abc");//字符串的连接

            Console.WriteLine(s);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值