2020/1/301数组和字符串(补充)数组的概念声明和创建数组通过索引访问数组遍历数组元素数组作为函数参数Array类了解字符串及其常用方法1数组的概念只包含单个序列的数组:一维数组多维数组:通过一个或多个值进行索引。[0][1][2][3]……[N-1][0][0][0][N-1][0][1][0][2][0][3]……[1][0][1][N-1][1][1][1][2][1][3]……[2][0][2][N-1][2][1][2][2][2][3]……[3][0][3][N-1][3][1][3][2][3][3]……………………………………[M-1][0][M-1][N-1][M-1][1][M-1][2][M-1][3]……2.1数组的声明声明数组变量:数据类型[]数组名;例:int[]pins;string[]myStrings;char[]charGroup;double[]mathsScore;2.2数组的创建创建数组实例:数组名=new数据类型[长度];例:int[]pins=newint[4];//这时,数组元素初始化为一个默认值:数值型(例如int)元素初始化为0,bool型元素初始化为false,引用型元素初始化为null(空对象)2.3数组的初始化把数组元素初始化为特定值例:int[]pins=newint[4]{9,3,7,2};string[]names=newstring[]{“Frank”,”Jack”};3.多维数组多维数组的声明:声明一个二维整数数组a[3,4],其初值为a[0,0]=10;a[0,1]=20;a[0,2]=30;a[0,3]=40;a[1,0]=5;a[1,1]=15;a[1,2]=25;a[1,3]=35;a[2,0]=12;a[2,1]=24;a[2,2]=36;a[2,3]=48;写法如下:int[,]a=newint[3,4]{{10,20,30,40},{5,15,25,35},{12,24,35,48}};4.访问单个数组元素通过index下标来访问数组元素例:读写pins数组的某一元素pins[2]=6;//写入Console.WriteLine(pins[2]);//读取5.遍历数组成员遍历:访问每一个成员两种方法:用index-下标的变动,使用循环语句;用foreach语句,逐个取数组元素(只能读,不能写)5.遍历数组成员-例例:for语句来遍历数组元素int[]pins={9,3,7,2};for(intidx=0;idx!=pins.Length;++idx){intpin=pins[idx];System.Console.WriteLine(pin);}例:foreach语句来遍历数组元素int[]pins={9,3,7,2};foreach(intpininpins){Console.WriteLine(pin);}一维数组的操作System.Array类C#的数组类型是从抽象基类型System.Array派生。它的重要属性Length返回数组的长度,方法成员如下:Clear:清楚数组元素的值Copy:复制数组*Sort:对数组排序*Reverse:反转数组元素的顺序*IndexOf:从左到右查找数组元素*LastIndexOf:从右到左查找数组元素*Resize:更改数组长度。带*号的方法只能针对一维数组进行操作。案例演示:P396.System.Array类提供方法:创建、操作、搜索和排序数组,例:int[]pics=newint[]{5,4,3,2,1,0};Console.WriteLine(pics.Length);Console.WriteLine(pics.GetUpperBound(0));Console.WriteLine(Array.IndexOf(pics,7));int[]pics2=(int[])(pics.Clone());pics2[0]=10;Console.WriteLine(pics[0]);Console.WriteLine(pics2[0]);Console.WriteLine(pics2[1]);6返回Array的第一维的索引上限5返回String对象内第一次出现子字符串的字符位置-151042020/1/30127字符串string基本概念C#字符串是一个由若干个Unicode字符的组成字符数组。字符串常量使用双引号来标记,字符串变量使用string关键字来声明。两个字符串可以通过加号运算符(+)来连接,C#字符串是不可变的,也就是说字符串一旦创建,其内容就不能更改。C#允许使用关系运算符==、!=来比较两个字符串各对应的字符是否相同。C#的字符串可以看成一个字符数组。因此,C#允许通过索引来提取字符串中的字符。2020/1/3013字符串stringC#的string是System.String的别名。在.NetFramework之中,System.String提供的常用属性和方法有:Length、Copy、IndexOf、LastIndexOf、Insert、Remove、Replace、Split、Substring、Trim、Format等,分别用来获得字符串长度、复制字符串、从左查找字符、从右查找字符、插入字符、删除字符、替换字符、分割字符串、取子字符串、压缩字符串的空白、格式化字符串等。为了增强字符串的操作,.NETFramework.类库还提供了System.Text.StringBuilder类,可以构造可变字符串。StringBuilder类提供的常用属性和方法有:Length、Append、Insert、Remove、Replace、ToString等,分别用来获得字符串长度、追加字符、插入字符、删除字符、替换字符、将StringBuilder转化为string字符串。Index(索引)分析0123456789101112Hello!Kitty!对于字符串s1=“Hello!Kitty!”;可视为从左到右逐一放在一连串的存储空间中,给每个存储空间由0开始编号。分析:s1[n]的值由此,对于s1[n]的值如下:s1[0]=‘H’s1[1]=‘e’s1[7]=‘K’s1[2]=‘l’s1[8]=‘I’s1[3]=‘l’s1[9]=‘t’s1[4]=‘o’s1[10]=‘t’s1[5]=‘!’s1[11]=‘y’s1[6]=‘‘s1[12]=‘!’7.常用字符串处理函数字符串看作:System.Char对象的数组。每一个Char对象在String中都有它自己的位置:index-索引(从零开始)String操作/成员函数IndexOf()//返回String对象内第一次出现子字符串的字符位置Split()//返回一个字符串拆分为若干子字符串时所产生的字符串数组。SubString()//返回位于String对象中的指定位置的子字符串Insert()//在此实例中的指定索引位置插入一个指定的String实例IndexOf例Stringstr=“Hello!Kitty!”;str.IndexOf(‘k');str.IndexOf(‘E’);str.IndexOf(“llo”);//7//-1//2Split()例1,2例1:用一个字符分割strings=“mynameisKitty”;string[]words=s.Split(newchar[]{'‘});//结果:words={“my”,“name”,“is”,“Kitty”}例2:用多个字符分割strings=“Hello,TomandJerry”;string[]words=s.split(newchar[]{‘’,‘,’});//结果:words={“Hello”,“Tom”,“and”,“Jerry”}Split()例3例3:用字符串分割Strings=“TomandJerry”;string[]words=s.Split(newchar[]{'a','n','d'});//结果:words={“Tom”,“Jerry”}SubString()例例1:strings=“中华人民共和国”;//从第三个字符开始获取子字符串stringx=s.Substring(2);例2:strings=“中华人民共和国”;//从第三个字符开始获取长度为4的子字符串stringx=s.Substring(2,4);Insert()例把一个字符串插到另一字符串中strings=abefg;s.Insert.(2,cd));Result?S=“abcdefg”;插入的index位置进行插入的substring堂上练习-1若有stringstr=“Hiyalovelypet”;intidx1=str.IndexOf(‘H’)//idx1=?intidx2=str.IndexOf(‘ya’)//idx2=?intidx3=str.IndexOf(‘B’)//idx3=?strings1=str.Substring(2,4);//s1[1]=?string[]s2=str.split(newchar[]{‘’});//s2[1]=?str.Insert(4,“!”);//str=?intlen1=s1.length;//len1=?intlen2=str.length;//len2=?02-1yallovleyHiya!Lovelypet416实验思考题:设计函数:IntCountWords(stringsentense){//1.输入一个英语句子//2.统计句子中包含多少个单词//3.单词以空格、逗号、句号分隔}Tips:使用split():分割字符串使用Length属性得到个数其它string处理stringfox;fox.ToLower():转化成小写字母lowercasefox.ToUpper():转化成大写字母uppercasefox.Trim():删除前后空格fox.Trim(trimChars):删除其它字符fox.TrimStart():删除前空格fox.TrimEnd():删除后空格fox.PadLeft(10):增加左边空格,使字串达到某长度fox.PadRight(10):增加右边空格,使字串达到某长度fox.PadX(10,‘-’):增加其它字符,使字串达到某长度X指:Left/Rightfox.Split(''):将字串分解成数组