---------------------- 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进行修改,那么就必须创建一个新的字符串,用 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培训、期待与您交流! ----------------------