---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
一:字符串比较的方法
1. "=="
string a = "JaVa"; string b = "JAVA"; if (a == b) { Console.WriteLine("相等"); } else { Console.WriteLine("不相等"); } Console.ReadKey();
字符串的相等是区分大小写的,因此,结果大家都应该知道,他们是不相等的。
接下来我们看看string的Tolower()和ToUper()方法:Tolower():字符串全部转换成小写,同时返回一个转换完毕的字符串
ToUper():字符串全部转换成大写,同时返回一个转换完毕的字符串string a = "JaVa"; string b = "JAVA"; a.ToLower(); b.ToLower(); if (a == b) { Console.WriteLine("相等"); } else { Console.WriteLine("不相等"); } Console.ReadKey();
请问现在他们是相等的吗?可以思考一下:
还是不相等,因为他们需要一个变量来接受字符串转换的结果,
string a = "JaVa"; string b = "JAVA"; string c = a.ToLower(); string d = b.ToLower(); if (c== d) { Console.WriteLine("相等"); } else { Console.WriteLine("不相等"); }
a和b仍然是不相等,而现在的c和d是相等,当然你也可以将a和b同时输出,他们的字符串仍然原来的字符串,并没有改变。
接下来我们看字符串一个特殊的性质:不可改变性(字符串一旦赋值就无法改变)
我们如何来理解这句话呢?
string a = "JaVa"; string b = "JAVA"; a = a.ToLower(); b = b.ToLower(); if (a== b) { Console.WriteLine("相等"); } else { Console.WriteLine("不相等"); }
那这段代码输出又会是怎么样呢?
当然大家都知道肯定是相等的啊,同时疑问也来了,为什么跟上面说的字符串的原则相违背呢?
情况是这样的,字符串属于引用类型,a.ToLower()就是复制了一个字符串,同时在内存中开辟了一个新的空间,而a = a.ToLower()实际上就是将这个新开辟空间的地址赋值给了a,因此现在的a存的是指向这个字符串的地址,而a之前指向的字符串的值仍然存在内存中。
大家又会有一个问题,那这个值我们还能不能拿回来?
这我们是无法获得了,丢失了..... 所以这就没有违背字符串的这个原则
2.Equals()中相等用法大家都知道,现在我们看看不区分大小写的字符串相等
string a = "JaVa"; string b = "JAVA"; if (a.Equals(b,StringComparison.OrdinalIgnoreCase)) { Console.WriteLine("相等"); } else { Console.WriteLine("不相等"); } Console.ReadKey();
结果是相等。当我们在输入验证码的时候我们是不区分大小写的,就可以用这一方法。
二:字符串转换
1 字符串的连接+,两边只要有一个是字符串类型,另一个也会被自动转换成字符串类型
2 一切类型都可以调用ToSting()方法转换成字符串类型
三 字符串的分割(使用Split方法,返回值是字符串数组)1.单个分隔符,我们需要创建一个字符串数组去接受它
string str = "You are my superstar"; string[] strs = str.Split(' ');
2.多个分隔符(params char[] separator,接受一个分隔符的数组)string str = "You are my superstar. Thank you!"; string[] strs = str.Split(' ','.','!');
输出结果发现返回的有两个空字符串,调试的时候你会清楚的发现。这是因为当多个分隔符连在一起的时候,编译器也会把第一个分隔符两边的都看成字符串来出路。
3.当多个空格连在一起用Split的重载方法删除空字符string str = "You are my superstar. Thank you!"; char[] char1 = {' ','.','!'}; string[] strs = str.Split(char1, StringSplitOptions.RemoveEmptyEntries);
注意:因为用的是params 所以我们不能像2的方式那么写,并在后面直接加上这个参数
四 Replace方法
string date = "2013/3/2"; string str = date.Replace("/","-");
(必须给一个字符串变量接受替换后的字符串)
五 Substring方法string str = "Hello World!"; string str1 = str.Substring(6);
(结果:World!)
string str = "Hello World!"; string str2 = str.Substring(6,2);
(结果:Wo)
看看上面的输出结果,我觉着大家应该都知道是这么回事儿了。
六 Contains方法(一般用来过滤关键字)
string[] words = new string[] {"张三","王五" }; string str = Console.ReadLine(); for (int i=0;i<words.Length;i++) { if(str.Contains(words[i])) { str=str.Replace(words[i],"***"); } }
七 IndexOf()
string str = "Hello,World!";
Console.WriteLine(str.IndexOf("o"));(结果 4)