字符串

字符串特性:不可变性,不管对字符串做什么操作,都会在内存中产生一块新的实例。

 特性:驻留池

string s1="张三";
string s2="张三"

s1和s2指向堆中的同一个引用,为了节省内存

如果给s2重新赋值为“李四“,s1不会变,因为s2是重新分配的一块空间,就是字符串的不可变性,”张三“不会被GC销毁,因为s1仍然指向”张三“

字符串方法

IsNullOrEmpty()  判断字符串是null还是System.String.Empty

string s="";
if(string.IsNullOrEmpty(s)){}

我们可以将一个字符串看作是char类型的只读数组

ToCharArray()  返回字符数组

string str="abcdef";
char[] ch= str.ToCharArray();//字符串转字符数组
ch[2]=h;
//char数组转字符串
string english=new string(ch);
//字符串可以通过下标访问某个字符
Console.WriteLine(english[0]);

ToLower()  转小写

ToUpper()  转大写

Equals()  比较两个字符串是否相等

对于string类型而言,不管是==还是Equals比较的都是值本身

string s1="aBc";
string s2="ABc";
//StringComparison.OrdinalIgnoreCase忽略被比较字符串的大小写
if(s1.Equals(s2,StringComparison.OrdinalIgnoreCase)){}

Person p1=new Person(){Name="张三",Age=18};
Person p2=new Person(){Name="李四",Age=18};
//这两个判断都为false
if(p1==p2){}
if(p1.Equals(p2)){}
Person p3=new Person(){Name="王五",Age=18};
Person p4=new Person(){Name="王五",Age=18};
//这两个判断依然为false
if(p3==p4){}
if(p3.Equals(p4)){}
//如果在Person类里重写Equals方法,这个判断就为true了
if(p3.Equals(p4))
{
  Console.WriteLine(p3.ToString());//这个对象所在类的命名空间
}
class Person { public string Name{get;set;} public int Age{get;set;} public override bool Equals(object obj) { Person person=obj as Person; if(this.Name==Person.Name&&this.Age==person.Age) { return true; } else { return false; } } }

Equals默认比较的是地址,但是我们在自己定义的类中如果用到Equals,都会将Equals进行重写,使之按照我们自己的需求进行比较

ToString()也可重写

IndexOf()  第一次出现的位置

LastIndexOf()    最后一次出现的位置

string str="Hello World";
//在字符串中找到o第一次出现的位置,默认从0开始找
int index=str.IndexOf('o');
//从下标为2的位置找,包含2
int index2=str.IndexOf('o',2);
//最后一次出现的位置
int index2=str.LastIndexOf('o');

如果找不到返回-1

SubString()  截取字符串

string name="小明今天出去玩,非常高兴";
int index = name.IndexOf(",");
//从当前位置截取字符串,默认截到最后
string str=name.SubString(index+1);

Split()  分割

string str="a,b---.      c,d";
//StringSplitOptions.RemoveEmptyEntries移除分割后数组中的”“空
str.Split(new char[]{',','-','-'},StringSplitOptions.RemoveEmptyEntries);
//字符串--->char类型数组 ToCharArray()
//字符串--->string类型的数组 Split()
//如果只是开头和结尾有空格,可以使用Trim(),返回的是字符串
string name="  张三    ";
name.Trim();
//参数也可以为char数组,或字符
string intro=",,,,   大家好,我是小明----";
intro.Trim(',',' ','-');

Join()  连接

string[] name={"阿紫","小红","小白","小明"};
string str=string.Join("&",name);

Replace()  替换

string content="小明,你是个不知羞耻的人";
if(content.Contains("不知羞耻"))
{
     content = content.Replace("不知羞耻","****");
}
原文地址:https://www.cnblogs.com/xiaonangua/p/7284613.html