字符串基础总结
字符串的常用方法
1,字符串的语法定义:string strName;strName = value;或者是string name = value ;这两种定义方式是等价的。字符串是引用类型,在定义 string strName的时候在栈空间中,定义了一个strName的空间,该空间存放一个内存地址;而当进行变量复制操作strName = "The C# Programming Language"的时候,系统会在堆内存分配一个内存空间,该内存空间存储"The C# Programming Language"值,并且将该内存空间的首地址赋值给strName,即栈内存空间是存储对应堆内存空间的首地址,而堆内存空间则才是正真存储数据。
2,字符串的声明
字符串string对应MSIL(CTS)公共类型系统中的String,实际上是一个类,那么以前了解到,类需要使用new<构造方法>()来进行实例化,同样字符串也可以通过此方式进行实例化3一个变量;例如: string strName = new string(new char[]{...});
备注:这里的String和string等价的效果。
字符串的特性:字符串是不可变的,在内存中字符串一旦生成,内存的数据将不会改变,即使是使用str1 = str1 + str2操作,也只是在内存中重新申请内存空间来存储str1 + str2操作后的结果。那需要修改字符串是怎么处理?这里介绍一个方法strName.ToCharArray(),该方法会将字符串编程一个char类型的数组,因此需要用一个char类型的数组接收。
例如:修改字符串里面的内容 char[] ch = strName.ToCharArray(); for(int i =0;i< ch.length;i++){ 进行处理需要修改的数据} strName = new string(ch);//这里将修改后的字符串赋值给strName.
3,字符串使用索引访问
字符串原本就是排列在一起的字符组成的,C#提供了用"下标"(索引)来访问字符串中的字符,例如:
string strName ="andyWqh";在这里内存中将'a'分配编号为0,'n'分配的编号为1,后面的字符的编号依次递增。因此,如果需要访问'W',则必须通过循环遍历该字符串的每一个字符,找到编号为4,所以可以这么来访问:char ch = strName[4];即可获取'W'字符。
备注:字符串有一个Length属性,通过strName.Length可以得到该字符串的总长度。
4,常见的字符串方法:
4.1 字符串的大小写(正对字符串里每一个字符而言)
所有字符变成大写:string strName.ToUpper();
所有字符变成小写:string strName.ToLower();
4.2 移除字符串的首尾指定字符
方法原型: string strName.Trim();//移除字符串strName的首位空格
string strName.TrimStrat();//移除字符串strName开头的空格
string strName.TrimEnd();//移除字符串strName的结尾处的空格
若果需要指定移除的内容,则可以添加一个char数组作为参数 string strName.Trim(char[] ch);
4.3 字符串的比较方法
Compare()方法原型:int string.Compare(string str1,string str2);
按照字典排序进行比较:当 str1 > str2时返回1;
当 str1 = str2时返回0;
当str1 < str2时返回-1;
备注:int string.Compare(string str1,string str2,bool ignoreCase)表示是否区分大小写,ignoreCase为true表示不区分大小写,默认值为false;
Equals()方法原型 bool strName.Equals(string str);比较结果若是相等则返回true,否则返回false。
备注: bool strName.Equals(string str,String.Comparison。OrderinaIgnoreCase)表示不区分大小写,若只是仅仅比较两个字符串是否相等,则使用"=="运算比较简单。
4.4 字符串的合并和分隔
合并join方法:将数组strArray中的内容拼接成一个字符串,并在对应的数组每两项之间增加分隔符str; strName.Join(str,strArray)。
方法原型:string strName.Join(string str,string[] strArray);
字符串分隔Split方法
方法原型:string[] strName.Split(params char[] separator);将字符串strName以separator中的字符进行分隔,分隔后返回得到的内容存储到数组中;返回的数组中可以有空字符串项,如果想要去掉这些空字符串项,则可以使用string[] strName.Split(char[] separator,StringSplitOptions.RemoveEmptyEntries).
4.5 字符串的查询
Contains()方法
方法原型:bool strName.Comtains(string str);表示字符串strName中是否包含str,如果包含则返回true,否则返回false.
IndexOf()方法
常用的两种方式:a) int strName.IndexOf(string str)从头开始查询到第一次出现str的下标。b) int strName.IndexOf(string str,int startIndex)从startIndex开始,出现第一次的下标。如果没有找到则直接返回-1. LastIndexOf()睡觉哦从最后一个字符开始进行匹配。
IndexOpAny()方法
方法原型: int strName.IndexOfAny(char[] anyOf)寻找字符串中的所有内容,返回第一个字符的位置。同样有一个重载方法 int strName.IndexOfAny(char[] anyOf,int startIndex);
4.6 求子字符串方法
string strName.Substring(int stratIndex,int length)从字符串strName的startIndex位置开始提取长度为Length的字符串,如果省略第二个参数则表示一直到最后的字符。
4.7 字符串的插入,移除和替换操作
4.7.1 插入操作
在字符串strName的index位置上插入str,原来的字符依次往后移动,变成一个新的字符串 strName = strName.Insert(index,str);
方法原型: string strName.Insert(int index,string str);
4.7.2 移除操作
在字符串strName中移除从startIndex开始,长度为Length的字符串,剩下的字符串按原有顺序合并为一个新的字符串。 strName= strName.Remove(startIndex,length);
方法原型: string strName.Remove(stratIndex,int length) ;如果省略第二个参数,将移除startIndex后所有的字符串。
4.7.3 替换操作
将字符串strName 中的oldChar替换为newChar strName = strName.Replace(oldChar,newChar);
方法原型:string strName.Replace(string oldValue,string newValue);
4.8 判断结束与开始
判断字符串strName是否已某字符串开始或者结束
bool strName.StartsWith(string str)判断开始
bool strName.EndsWith(string str)判断结束