字符串:
string s="123";
虽然字符串也是直接赋值的,但是确实引用类型!
当程序执行到这时先在线程栈里申请一个string s 然后再在托管堆里申请一块空间放“123”,然后把地址赋给s!
对于已经初始化好字符串,不能再次赋值,它的属性是只读的!
想要对它赋值,只能重新初始化申请一个空间地址让他指向那个空间地址;
但是这个地址的对象只能是char[]数组才可以赋值给s 否则都是错误的!
string s = "sssss";
char[] b = s.ToCharArray();
s = new string(b);
Console.WriteLine(s);
Console.ReadKey();
char[] b = s.ToCharArray();
s = new string(b);
Console.WriteLine(s);
Console.ReadKey();
虽然string也可以用下标或索引访问元素,但是在内存中确实一个地址,而数组是一片连续的地址!所以数组可以直接修改里面的值,而字符串不行!看下string的改变方式:
string s=“aaa”;
s=s.ToUpper();将小写字母全部换成大写字母
s=s.Tolower();大写换小写;
s.trim();去掉首尾的空字符;
s.trimstart()去掉首部的空字符;
s.trimend();去掉尾部的空字符;
s.compare(s,s1);对比s和s1这俩个字符串,s大这返回1,等于返回0,否则为-1;
s.equals(s,s1)对比俩个字符串是否相等!
string s1= string.join(s,str)合并字符串素组str成一个字符串并以s为分割合并!
string【】 str=s.split(' ',‘.’,‘/’)将s以空格,.,/为分割把s分割装到str中
s.remove(1,x)移除从下标为1到x的那段字符,剩下的合并成一个字符串!
s.replace(“xx”,“yy“)把字符xx或字符串xx替换为字符yy或字符串yy
s.contains(str)如果s中包含str这返回turn,没有为false
s.indexof(str)找到str出现的第一次的坐标,
s.indexof(
str
,
x
)从x开始查找出现str第一次的坐标
s.indexofany(str【】{'a'},x)查找a在str出现恶所有位置x,
s.substring(1,3)截取从1开始到3这段字符串