黑马程序员-String类和它的方法

来源:互联网 发布:有关民国闺秀的书 知乎 编辑:程序博客网 时间:2024/06/06 17:50

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------

string类在c#中是一个使用非常频繁的类,这篇博文总结一下c#中string类的常用方法。

首先string类是一个引用类型,栈中储存一个指针指向托管堆中的只读字符串,该字符串不能更改,因而对字符串每一次连接或分割操作都会造成先前的字符串指针指向新开辟的区域。因而在操作频繁的情况下会浪费大量的内存,只是封装字符串不得不付出的代价

string类中默认重载了两个运算符!=和==,这导致==运算和string的equals方法几乎有同样的效果,而且equals也已经被多次重载,在比较字符串时,我们不必区分是深度比较(比较托管堆中的字符串)还是浅比较(仅仅比较两个字符串的引用)。很显然,如果两个字符串变量的值相同,它们的引用一定相同

string类的方法有很多,仅仅把一些重点和常用的介绍一下:

Eauals方法:比较两个字符串的值是否相同

string str1="hello";string str2="hello";console.writeline(str1.equals(str2));




public static bool operator ==(string a, string b);

==运算符的重载,重载后表现和equals方法完全一致


contains方法,查找指定的子串是否在原串中出现,重载数0,返回是否出现的布尔值,使用示例:

string str=console.readline();if(str.contains("大学")){console.writeline("我猜你是大学生吧?");}



copy方法,拷贝字符串到新子串,静态方法,0重载,浅复制(复制引用),使用示例:

            string str = "hello";            string str2 = string.Copy(str);            Console.WriteLine(str==str2);


IndexOf方法,比较子串和原串,一般情况下返回子串在原串中第一次出现的位置,9次重载,使用示例:

string str = "hello,world";            Console.WriteLine(str.IndexOf("o"));


结果为4,此处使用是的是参数为字符串的重载

嵌套使用:

string str = "hello,world";          Console.WriteLine(str.IndexOf("o",str.IndexOf("o")+1));

答案为7,使用带起始搜索位置的重载

除此之外还有使用字符和跳过空白元素的重载


insert方法:在原串指定位置插入子串,0次重载,使用示例:

    string str = "hello,world";            Console.WriteLine(str.Insert(1,"kk"));

结果为:hkkello,world


join方法,用自定的分隔符连接多个子串,5次重载,静态方法,使用示例:

parms关键字:使得声明为数组的参数即可以接受定长数组,也可以接受分开的任意个同类型参数

Console.WriteLine(string.Join("-", "123", "456", "789"));


输出结果:123-456-789


spilt方法,按照指定的分割符将原串分割成多个子串,分割符从字符数组或字符串数组中提取,5次重载,使用示例:

     string str = "123-456-789-0";            string[] spstr = str.Split('-');            for (int i = 0; i < spstr.Length; i++)            {                Console.WriteLine(spstr[i]);            }


可使用StringSplitOptions枚举指定是否跳过空白字符


spilt的综合应用:敏感词屏蔽器:

 Console.WriteLine("请您输入要发表的内容");                        string[] str = new string[10] { "shit", "party", "god", "egg", "penis", "blowjob"};            char[] 反屏蔽字符 = new char[2]{ ' ', '.' };            string strACC = Console.ReadLine();            string[] strsp = strACC.Split(反屏蔽字符);            strACC = null;            for (int i = 0; i < strsp.Length; i++)            {                strACC += strsp[i];            }            Console.WriteLine(strACC);            int k = 0;                for (int i = 0; i < str.Length; i++)                {                    if (strACC.Contains(str[i]))                    {                        strACC = strACC.Replace(str[i], "**");                        k++;                    }                }            Console.Clear();            if (k > 0)            {                Console.WriteLine("您输入内容中的不和谐词汇已经被屏蔽,请您注意自己的言行!");            }            Console.WriteLine(strACC);





------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------

原创粉丝点击