黑马程序员_string类

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------


string类

在C#中,string是一个字符串,也是一个类,是一个特殊的类。

string可以看做是char的只读数组。char c = s[1];  例子:

            strings = "hello,world!";

 

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

            {

                Console.WriteLine(s[i]);

            }


字符串有一个重要的特性:不可变性,字符串一旦声明就不再可以改变。

为什么呢?

字符串是一个特殊的变量,其他类型比如int类型、 char类型,重新赋值是直接在内存空间中改变其的值,而字符串变量是在内存空间中改变变量名所指向的值,而不是直接改变字符串本身。我们声明一个字符串变量,只是声明了一个变量名,然后指向一个字符串,当我们对其重新赋值时,只是把变量名指向另外一个字符串,而原本的字符串并没有改变。

怎样区分变量名和变量所指向的值:

程序中可以有很多个字符串,然后由字符串变量指向他们,变量可以指向其他的字符串,但是字符串本身没有变化。字符串不可变性指的是内存中的字符串不可变,而不是变量不变。


因为字符串的不可变性,所以只能通过索引来读取指定位置的的char,不能对指定位置的char进行修改。

如果要对char进行修改,那么就必须创建一个新的字符串,用 s.ToCharArray() 方法得到字符串的char数组,对数组进行修改后,调用 new string(char[]);  这个构造函数来创建char数组的字符串。一旦字符串被创建,那么对char数组的修改也不会造成字符串的变化。 代码示例:

改变字符串中某一个字符的值的方法:

            strings = "hello,world!";

            char[]chars = s.ToCharArray();

            chars[0] = 'i';

            s = new string(chars);

            Console.WriteLine(s);  //这里显示结果为  iello,world!

再改变数组中某个元素的值,也不会造成字符串的变化:

            strings = "hello,world!";

             char[]chars = s.ToCharArray();

            chars[0] = 'i';

             s = new string(chars);

            Console.WriteLine(s);  //这里显示结果为  iello,world!

            chars[0] = 'q';

            Console.WriteLine(s);  //这里显示结果为  iello,world!


注意:

多个字符串之间用“+”连接,两边只要有一个是字符串类型,另一个也会被自动转换成字符串类型。

一切对象都可以调用.ToString()方法转换成字符串类型。


string类常用方法

ToLower(); 得到字符串的小写形式

ToUpper(); 得到字符串的大写形式

Trim(); 去掉字符串两端的空白

s1.Equals(s2,StringComparison.OrdinallgnoreCase); s1和s2两个字符串进行不区分大小写的比较

注意:字符串是不可改变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回。如:

s.ToLower();//调用方法

s=s.ToLower(); //调用方法后返回的值再赋回给s


字符串的分割:

将字符串按指定的分割符分割为字符串数组,用Split方法 例如:

            stringstr = "My name is liming";

            string[]words = str.Split(' '); //用空格分割上面的字符串,返回一个数组

是否返回空字符串用StringSplitOptions,None为返回,RemoveEmptyEntries为不返回,例如:

            stringstr = "How   are  you?Fine,Thank   you!";

            char[]removeChar = { ' ', '?',',', '!'};

            string[]words = str.Split(removeChar, StringSplitOptions.RemoveEmptyEntries);


字符串的替换:

将字符串中某部分字符与另外部分字符进行替换,用Replace方法 例如:

            stringdate = "2010-10-15";

            date = date.Replace("-", "/");//将上面字符串中的 - 替换为 /


字符串的截取:

将字符串从某个位置开始一直到最后,截取出来的子字符串,用Substring方法  例如:

            stringstr = "hello,world!";

            stringresult = str.Substring(6);//将上面的字符串从长度为6的部分开始截取,到最后,输出结果为 world!

将字符串从某个位置开始,截取某个长度的子字符串  例如:

            stringstr = "hello,world!";

            result =str.Substring(6, 3); //从长度为6的部分开始,截取长度为3的子字符串 输出结果为 wor


字符串的判断:

判断字符串中是否含有子字符串value,用Contains方法,返回值为bool类型 例如:

            stringcen = "My name is xiaoming";

            stringvalue = "xiaoming"; //定义子字符串

            if(cen.Contains(value)) //用Contains方法判断

            {//含有子字符串

                Console.WriteLine("含有字字符串");

            }

            else

            {//不含有

                Console.WriteLine("不含有字字符串");

            }

 判断字符串是否以子字符串value开始,用StartsWith方法,返回值为bool类型 例如:

            stringcen = "My name is xiaoming";

            stringvalue = "My"; //定义子字符串

            if(cen.StartsWith(value)) //用StartsWith方法判断

            {//以value字符串开始

                Console.WriteLine("以{0}字符串开始",value);

            }

            else

            {//不以value字符串开始

                Console.WriteLine("不以{0}字符串开始",value);

            }

 判断字符串是否以子字符串value结束,用EndsWith方法,返回值为bool类型 例子与上面类似。


字符串的搜索:

搜索子字符串value第一次出现的位置,用IndexOf方法,返回值为int类型 例如:

            stringstr = "Hello,World!";

            Console.WriteLine(str.IndexOf("o"));  //输出结果为4,也就是第一次出现o的位置的下标为4

从什么地方开始搜索  例如:

            stringstr = "Hello,World!";

            Console.WriteLine(str.IndexOf("o",5)); //输出结果为7,也就是从下标为5的位置开始搜索第一次出现o的位置下标为7


字符串类还有许多其他的方法,可以按F1查看msdn。所以,我们要学会使用msdn,遇到不懂的代码或者关键字可以查看msdn,上面有详细地说明还有示例。


---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值