8.1字符串
一、概述:
字符串是由一个或多个字符组成的序列,使用String或string定义字符串
二、具体讲解:
1.创建字符串:
要使用字符串数据,必须定义字符串变量,C#中的字符串变量实际上是String类的对象,所以字符串变量的定义和字符串操作和类的对象定义和类的方法调用方式相同,语法如下:
string 字符串变量名;
2.赋值方式:
在定义时同时赋值,例如:
string str="Hello World";
将一个字符串赋给另一个字符串,例如:
string str="114514";
string str2=str+"114514";
使用对象的方式,创建包含指定个数给定字符的字符串,例如:
string str=new string('w',10);//对应字符串为wwwwwwwwww
注意:’‘是转义字符的前缀,因此想要赋值包含’‘的字符串,需要使用转义字符,例如:’\'
3.字符串基本操作:
字符串判等:
1.方法Equals(),相等返回true,否则返回false,语法格式:字符串变量1.Equalz(字符串2)
2.静态方法Equals(),语法格式:string.Equals(字符串1,字符串2)
3.也可以使用关系运算符“==”
字符串比较:
1.方法CompareTo(),返回值1,0,-1,语法格式:字符串变量.CompareTo(字符串2),1表示该字符串变量大于字符串2,0为相等,-1为小于
2.也可以使用静态方法Compare(),例如:
string.Compare(str1,str2);
判断字符串变量是否包含指定字符或字符串:
1.方法Contains(),包含返回true,否则返回false
语法格式:字符串1.Contains(字符/字符串)
查找字符串变量中指定字符或字符串出现的位置:
1.方法IndexOf(),返回指定字符第一次出现的位置,字符串返回第一个字符的位置
语法格式:字符串.IndexOf(字符/字符串)
取子串:
1.方法SubString()用于从字符串变量中获取指定位置开始的指定长度的子字符串,如果未指定长度,则一直取到末尾
语法格式:字符串变量.SubString(起始位置,字串长度)
字符串变量.SubString(起始位置) //取到末尾
插入子串:
1.方法Insert()在指定位置插入子串,返回值为该子字符串
语法格式:字符串变量.Insert(起始位置,子字符串2)
删除子串:
1.方法Remove()在字符串变量中删除指定位置开始的指定长度的子字符串
语法格式:子字符串变量.Remove(起始位置,字串长度)
替换字串:
1.方法Replace()替换字符串变量中的指定字符或字符串,返回替换后的字符串变量
语法格式:字符串变量.Replace(字符/字符串1,字符/字符串2)
去除字符串空格:
1.方法Trim()去除字符串变量头部和尾部的空格,返回去除空格之后的字符串变量
语法格式·:字符串变量.Trim()
2.方法TrimStart()和方法TrimEnd()可以分别去除字符串变量头部和尾部的空格
4.StringBuilder:
用于解决多次改变字符串变量所造成的内存开销,可使用Append()和AppendLine()方法添加内容
语法格式:str1.Append()
str1.AppendLine()
8.2数组
一、概述:
可以看作是一组具有相同数据类型的集合,存储一组类型相同的数据
二、具体讲解:
1.一维数组: 相当于一行多列的表格,数组中的数据叫做数组的元素
语法格式:数据类型 [ ] 数组名
int []a;
初始化: 数组名 = new 数组类型 [数组元素个数] {数组元素列表}
注意: 数组在定义时也可以初始化,如:数组类型 [ ] 数组名 = {元素1,元素2,……}
int数组默认值为0,bool数组默认值为false
访问: 数组名[下标],下标从0-Length-1(Length为数组的属性,a.Length)
2.二维数组: 相当于多行多列的表格
语法格式:数组类型 [, ] 数组名
初始化: 数组名 = new 数组类型[行数,列数]{数组元素列表}
也可写作:数组名 = new 数组类型[行数,列数]
int b = new int[2,3]{{1,2,3},{4,5,6}}
访问: 数组名[行号,列号]
3.多维数组和交错数组:
举例:三维数组,定义方法与上文类似,如:数组类型 [, ,] 数组名
交错数组: 相当于数组的数组,每个元素是一个数组
语法格式:数组类型 [ ][ ] 数组名
初始化: 例如:c=new int [3][ ] 含有3个元素,c[1],c[2],c[3],每个元素是一个数组
例如:
int [ ][ ] c=new int [3][]
{
new int [ ] {1,2,3}
new int [ ] {4,5,6,7}
new int [ ] {8,9,10,11,12}
}
4.数组的基本操作:
数组排序和反转:
1.使用Array类静态方法Sort()可以对数组排序,无返回值
语法格式: Array.Sort(数组名)
2.使用Array类静态方法Reverse()可以实现数组的反转,无返回值
查找数组元素:
1.Array类的静态方法IndexOf()可以判断数组是否包含与给定值相等的元素,是则返回下标,否则返回-1
语法格式: Array.Contains(数组名,要查找的值)
数组元素求和,最大值,最小值,平均值:
语法格式: 求和:数组名.Sum()
最大值:数组名.Max()
最小值:数组名.Min()
数组字符串相互转化:
1.String类的静态方法Join()可以将数组中所有元素连接起来,生成一个字符串
语法格式: String.Join(分隔符,数组名)
2.方法Split()可以根据给定的分隔符将字符串分为多个部分
语法格式: 字符串变量.Split(分隔符)
在字符串中查找、删除字符数组元素:
1.String类方法IndexOfAny()用于在字符串中查找给定字符数组的所有元素,返回字符数组元素在字符串中首次出现的位置值,否则返回-1
语法格式: 字符串变量.IndexOfAny(字符数组名)
2.String类方法LastIndexOfAny()在字符串中查找给定字符数组中的所有元素,返回最后下标,否则-1
8.3枚举
一、概述:
枚举类型用于声明一组命名常数
二、具体讲解:
1.定义:
语法格式:enum 枚举类型名 {枚举成员列表},例如:
enum week {星期一,星期二,星期三,星期四,星期五,星期六,星期天};
默认第一个常数为0,常数范围从0-Length-1,相当于对常数起了个名字
注意: 也可以指定枚举类型中名称和常数的对应关系,例如:
enum week{星期一=1,……}
//一旦手动指定后,序号会指定的名称之后递增
namespace enumExam
{
enum week {星期一,星期二,星期三,星期四,星期五,星期六,星期天};
class program
{
static void Main(string [] args)
{
week x=week.星期一;
week y=(week)2;
Console.WriteLine(x.ToString());
Console.WriteLine(y.ToString());
Console.WriteLine((week)2);
Console.ReadKey();
}
}
}
拓展:
字符数组和字符串相互转化:
语法格式:String str = new string(‘a’,5);
一个字符串可以当作一个下标位0-Length-1的字符数组
使用foreach语句遍历二维数组:
语法格式:foreach(int x in a)
按照先行后列的方式遍历
将数组作为方法的参数使用:
语法格式:void print(int array[])
二维数组:void print(int array[,])