黑马程序员:String 的常用方法

---------------------- <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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值