C#中字符串的处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenhaiming123/article/details/82729901

C#中字符串可以看做是char的只读数组,字符串有一个重要的特性:不可变性,字符串一旦声明就不再可以改变。字符串可以看做是char的只读数组,所以只能通过索引来读取指定位置的char,不能对指定位置的char进行修改。
如果要对char进行修改,那么就必须创建一个新的字符串,用s. ToCharArray()方法得到字符串的char数组,对数组进行修改后,调用new string(char[])这个构造函数(暂时不用细研究)来创建char数组的字符串。一旦字符串被创建,那么char数组的修改也不会造成字符串的变化.

练习:随机输入你心中想到的一个名字,然后输出它的字符串长度 Length:可以得字符串的长度

         Console.WriteLine("输入你心目中想到的名字");
         string name = Console.ReadLine();
         Console.WriteLine(name.Length);
         Console.ReadKey();

String类常用方法

1, ToLower():得到字符串的小写形式。

例子:将字符串“ABCD”转换成小写的“abcd”

string str = “ABCD”;

str=str.ToLower();//把字符串转换成小写的

Console.WriteLine(str);

Console.ReadKey();

注意:字符串是不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回。s.ToLower()与s=s.ToLower()。
2, ToUpper():得到字符串的大写形式; Trim()去掉字符串两端的空白

同样,ToUpper()方法与ToLower()方法的用法一样。

3, s1.Equals(s2, StringComparison.OrdinalIgnoreCase),两个字符串进行比较不区分大小写的比较。
例子:个学员输入各自最喜欢的课程名称,判断是否一致,如果相等,则输出你们俩喜欢相同的课程.如果不相同,则输出你们俩喜欢不相同的课程.

        Console.WriteLine("输入第一门课程");
        string str1 = Console.ReadLine();
        Console.WriteLine("输入第二门课程");
        string str2 = Console.ReadLine(); 
        bool result=str1.Equals(str2, StringComparison.OrdinalIgnoreCase);忽略大小写比较
        if (result)
        {
            Console.WriteLine("课程相同");
        }
        else
        {
            Console.WriteLine("课程不同");
        }
        if (str1==str2)
        {
            Console.WriteLine("课程一样"+str1);
        }
        else
        {
            Console.WriteLine("课程不同{0}--------{1}",str1,str2);
        }
        Console.ReadKey();

4,string[] Split(char[] separator, StringSplitOptions options)将字符串按照指定的char分割符分割为字符串数组( options 取RemoveEmptyEntries的时候移除结果中的空白字符串);

        string str = "2012------------------------11---------------02";
        char[]chs=new char[]{' ','-'};
        string[]result=str.Split(chs, StringSplitOptions.RemoveEmptyEntries);//已经把不想要的切

5,字符串替换:string Replace(string oldValue, string newValue)将字符串中的出现oldValue的地方替换为newValue。

例如:

string text = “小明很棒”;
text = text.Replace(‘很’, ‘不’);//把字符串name中的’很’替换成’不’。
Console.WriteLine(text);
Console.ReadKey();
6,string Substring(int startIndex, int length),取从位置startIndex开始长度为length的子字符串,如果子字符串的长度不足length则报错。

例如:

string text = “小明很棒”;
text=text Substring(3,3);//截取字符串
Console.WriteLine(text);
Console.ReadKey();

7,bool Contains(string value)判断字符串中是否含有子串value

string text = “小明很棒”;

bool result= text.Contains(“邪恶”);//判断这个字符串中是否包含子字符串

8,bool StartsWith(string value)判断字符串是否以子串value开始;

9,bool EndsWith (string value)判断字符串是否以子串value结束;

10,int IndexOf(string value):取子串value第一次出现的位置。

StringBuilder 和 String 的区别?

答:String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String

如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。

猜你喜欢

转载自blog.csdn.net/chenhaiming123/article/details/82729901
今日推荐