(1)字符串的不可变性指的是当你给一个字符串重新赋值之后,旧的值并没有被销毁,而是重新开辟一块空间存储新值。
(2)当程序结束后,GC扫描整个内存,如果发现有的空间没有被指向,则立即把它销毁。
下面介绍两个常用方法:
char[] chs=str.ToCharArray(); 将字符串转换为char数组
string str=new string(char[] chs);能够将char数组转换为字符串
(1)既然可以将string看作char类型的只读数组,注意是只读。所以我们可以通过下标去访问字符串中的某一个元素。
例子如下:
string s = "abcdghg";
Console.WriteLine(s[0]);//输出a
Console.ReadKey();
(2)假如要改变字符串s的首字母,也就是将上面字符串的首字母a变成b,可以这样做:
// s[0] = 'b';//不能这样做,因为是只读的
//正确写法:
//首先将字符串转换为char类型的数组
string s = "abcdghg";
char[] chs=s.ToCharArray();
chs[0] = 'b';//重新赋值
//将字符数组转换为我们的字符串
s= new string(chs);
Console.WriteLine(s[0]);//输出a
Console.ReadKey();
(1)Length:获得当前字符串中字符的个数
//1.Length:获得当前字符串中字符的个数
string a = "djofdShDdw";
Console.WriteLine(a.Length);//输出10
(2)ToUpper():将字符转换成大写形式
Console.WriteLine(a.ToUpper());//DJOFDSHDDW
(3)ToLower():将字符串转换成小写形式
Console.WriteLine(a.ToLower());//djofdshddw
(4)Equals():比较两个字符串字符是否相等
string b1 = "C#";
string b2 = "c#";
bool flag= b1.Equals(b2);//因为一个大写一个小写
Console.WriteLine(flag);//false
Equals():比较两个字符串字符是否相等,但是下面的枚举类型是忽略大小写。
string b1 = "C#";
string b2 = "c#";
bool flag = b1.Equals(b2, StringComparison.OrdinalIgnoreCase);//True
Console.WriteLine(flag);
(5)Split()分割字符串,返回字符串类型的数组
//我平常是这样写的
string s = "2008-09-15";
string[] str = s.Split('-');
//规范的写法应该是
char[] chs = { '-' };
string[] str = s.Split(chs, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("现在是{0}年{1}月{2}号", str[0], str[1], str[2]);
Console.ReadKey();
(6)Contains()判断某个字符串是否包含指定字符串
(7)Replace()将字符串中的某个字符串替换成一个新的字符串
string str = "国家关键人物老赵";
if (str.Contains("老赵"))
{
str= str.Replace("老赵","***");
}
Console.WriteLine(str);
Console.ReadKey();
(8)Substring 截取字符串,在截取的时候包含要截取的那个字符串
string str = "今天天气好晴朗,处处好风光";
//(1)从指定下标截取字符串,包含当前下标
// str = str.Substring(1);//天天气好晴朗,处处好风光
//(2)指定下标索引和截取的长度
str = str.Substring(1, 5);//天天气好晴
Console.WriteLine(str);
Console.ReadKey();
(9)StartsWith()判断以…开始
string str = "今天天气好晴朗,处处好风光";
if (str.StartsWith("今天"))
{
Console.WriteLine("yes");
}
else
{
Console.WriteLine("NO");
}
Console.ReadKey();//输出yes
(10)EndsWith() 判断以…结束
string str = "今天天气好晴朗,处处好风光";
if (str.EndsWith("今天"))
{
Console.WriteLine("yes");
}
else
{
Console.WriteLine("NO");
}
Console.ReadKey();//输出no
(11)IndexOf() 判断某个字符串在字符中第一次出现的位置,如果没有返回-1
string str = "今天天气好晴朗,处处好风光";
int index=str.IndexOf('天');//输出1
int index = str.IndexOf('天', 2);//第二个参数指的是开始找的位置(下标索引),从2开始找(包含2),输出2
Console.WriteLine(index);
Console.ReadKey();
(12)LastIndexOf():判断某个字符串在字符串中最后一次出现的位置,如果没有同样返回-1
string str = "今天天气好晴朗,处处好风光";
int index = str.LastIndexOf('天');
Console.WriteLine(index);//输出2
Console.ReadKey();
(13)Trim()去掉字符串中前后的空格;TrimStart() 去掉字符串中前面的空格;TrimEnd()去掉字符串中结尾的空格
string str = " hahahha ";
str = str.Trim();//hahahha
去掉前面的空格
str = str.TrimStart();//hahahha
去掉结尾的空客
//str = str.TrimEnd();// hahahha
Console.Write(str);
Console.ReadKey();
(14)string.IsNullOrEmpty()判断一个字符串是否为空或者为null
string str = "hello";
if (string.IsNullOrEmpty(str))
{
Console.WriteLine("yes");
}
else
{
Console.WriteLine("NO");
}
Console.ReadKey();//输出no
(15) string.Join():将数组按照指定的字符串链接,返回一个字符串;join() 方法返回使用指定分隔符拼接一个字符串。在join() 方法中,为每个元素添加了分隔符。
string[] names = { "张胜", "王龙华", "缓缓", "天晓娟" };
string str = string.Join("|", names);
Console.WriteLine(str);
Console.ReadKey();
(1)加号“+”在c#中的两个作用:
当两边都是数字的时候,起到加法作用;
当+号两边有一边是字符串的时候,+号就起到连接的作用。
让用户输入一句话,找出所有e的位置
string str = "denehekeufejheuere";
int index = str.IndexOf("e");
Console.WriteLine("第一次出现e的位置是{0}", index);
int count = 1;
while (index != -1)
{
index = str.IndexOf("e", index + 1);
if (index == -1)
{
break;
}
else
{
count++;
Console.WriteLine("第{0}次出现e的位置是{1}", count, index);
}
}
Console.ReadKey();