280 likes | 488 Vues
第 4 章 数组与字符串. 主要内容. 几种数组的定义以及使用 字符串的定义以及使用. 4.1 一维数组. 声明一维数组的语法是在类型后放方括号 : int[] numbers; 数组在被访问之前必须 new 初始化,初始化有 2 种方式。可以由字面形式指定数组的完整内容 : int[] numbers={1 , 2 , 3 , 4 , 5} ; 也可以先直接指定数组的大小,再使用关键字 new 初始化所有的数组元素。 int[] numbers=new int[5]{1 , 2 , 3 , 4 , 5};. 声明以及初始化数组.
E N D
主要内容 • 几种数组的定义以及使用 • 字符串的定义以及使用
4.1 一维数组 • 声明一维数组的语法是在类型后放方括号: int[] numbers; • 数组在被访问之前必须new初始化,初始化有2种方式。可以由字面形式指定数组的完整内容: int[] numbers={1,2,3,4,5}; 也可以先直接指定数组的大小,再使用关键字new初始化所有的数组元素。 int[] numbers=new int[5]{1,2,3,4,5};
声明以及初始化数组 • 也可以使用已经赋值的变量来进行初始化,例如: int a=3; int[] numbers=new int[a]; • 数组的下标是从0开始,所以上面那行所定义的数组包含以下3个元素:numbers[0], numbers[1], numbers[2]。
一个关于数组使用的例子 • 例4.1定义一个字符串数组将几个球员的姓名输入这个数组,并且把他们逆序输出来。
程序代码(show debug) • static void Main(string[] args) • { • Console.WriteLine("请输入球员个数:"); • int playerNo = int.Parse(Console.ReadLine()); • string[] names = new string[playerNo]; • for (int i = 0; i < names.Length; i++) • { • Console.WriteLine("请输入第{0}个球员的名字",i+1); • names[i]=Console.ReadLine(); • } • Console.WriteLine("你输入的球员名字分别是:"); • for (int i = 0; i < names.Length; i++) • Console.WriteLine(names[i]); • Console.ReadLine(); • }
4.2 多维数组与交错数组 • 定义多维数组的语法是在方括号内加逗号。如下所示,定义了一个二维数组: int[,] numbers; • 多维数组的初始化与一维数组的初始化很类似,若集体赋值,则要遵循行先序的原则,这些跟其他语言很类似。 int[,] numbers=new int[2,2]{1,2,3,4}; 这样,就是相当于这样给数组赋值: numbers[0,0]=1; numbers[0,1]=2; numbers[1,0]=3; numbers[1,1]=4; 上面的代码也可以写为: int[,] numbers=new int[2,2]{{1,2},{3,4} };
交错数组 • 在C#中,我们还可以定义一种交错数组,数组中的每一行可以不相同。交错数组的定义例子: int[][] numbers=new int[3][ ]; numbers[0]=new int[2]{ 1,2}; numbers[1]=new int[3] {2,3,4}; numbers[2]=new int[2] {6,7}; 对上面声明的交错数组赋值可以为:numbers[1][1]=6;
4.3 ArrayList类 –实现动态数组 • .NET框架提供了一个ArrayList类。用于建立可变长度的数组,这种数组的数据类型为Object,在数组元素中允许存放任何类型的数据。 • ArrayList类包含在System.Collections命名空间中,要在程序的开头添加System.Collections命名空间,才可以建立ArrayList对象类。
ArrayList 类的方法和属性 • ArrayList类是一种可以按需动态增长的数组。它提供了许多用于操作有用方法和属性。
Ex4.3 do it using System.Collections; static void Main(string[] args) { ArrayList myAL = new ArrayList(); myAL.Add("hello"); myAL.Add("World"); myAL.Add("!"); myAL.Add(123); myAL.Insert(1, 123.45);//Insert(int index, object value); Console.WriteLine("count={0} index={1}", myAL.Count, myAL.IndexOf("hello") ); foreach(Object obj in myAL) Console.Write(" {0} ", obj); }
4.4 HashTable (不讲) • 在.NET Framework中,HashTable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,这些键/值对根据键的哈希代码进行组织。其中key通常可用来快速查找,同时key是区分大小写的;value用于存储对应于key的值。
4.5 字符与字符串 • C#内置支持功能完全的string类型。 C#把字符串当成对象,封装了字符串所拥有的操作、排序和搜索方法。 • 定义字符串的方式:把一个双引号括起来的字符串赋给一个string类型的变量: string s = "abcdef";
字符串的声明和初始化 • 双引号括起来的字符串可以包含转义字符,如“\n”。 由于反斜线本身在一些命令行语法(如URL或者目录路径)中会用到,引号括起的字符串中,反斜线必须在其自身前面再加一个反斜线。如下面代码所示: string directory = "C:\\text";
字符串的声明和初始化 • 字符串也可以用原样的字符串字面值创建,以“@”符号开头。这样string构造方法就知道字符串应照原样使用,即使它要跨行或者含有转义字符。在原样字符串字面值中,反斜线和字符串可以简单地看成是多余的字符。因此,上面的程序代码 string directory="C:\\ text "; 也可以改写成如下的代码: string directory = @"C:\text"; // \ 用原样的字符 无@, 则“C:\text“ 中的\t 是转义字符;
4.5.2 字符串的处理 • string类型变量可以看作是char变量的只读数组。这样,就可以使用下面的语法访问每个字符: string myString = "abcdef"; char myChar= myString[1]; 还可以使用ToCharArray() 函数, 把string类型的变量转存到字符数组。
一个string转化为字符数组的例子 把一个string变量的所有值存放到一个字符数组里面去 。 static void Main(string[] args) { string s = "abcdef"; char[] myChar = s.ToCharArray(); Console.WriteLine("数组myChar输出如下:"); foreach(char c in myChar) Console.WriteLine("{0}",c); }
字符串的拼接 • 字符串的串接(合并)是指使用“+”符号连接前后两个字符串: • string city = "南京市"; • string street = "新街口"; • string address = city + street; • Console.WriteLine(“地址是:”+address); 上述代码的输出结果为: “地址是:南京市新街口”。
String类的方法和属性 • String类有很多方法和属性,常见的有:Length 属性、ToUpper/ToLower 方法、IndexOf 方法、SubString 方法等。
Length属性介绍 • Length属性是描述字符串长度的属性 string str2=”you are welcome!”; int n=str2.Length; 那么n就得到str2字符串的长度
ToUpper/ToLower 方法介绍 • ToUpper()方法是把字符串中所有的字母 都变成大写. • ToLower()方法是把字符串中所有的字母 都变成小写.
IndexOf 方法介绍 • IndexOf()方法是从str1字符串找出第一次出现某子字符串的位置 string str1=”you are welcome”; int n=str1.IndexOf(“are”); 那么n的值为4;
SubString ()方法 • SubString ()方法是从str1字符串的idx开始位(0是初位),长度为num的子串 : str1.SubString(idx, num); string str1=”you are welcome”; string str2=str1.Substring(4, 3); 那么str2=“are”;
Format()方法 double x=12.345678; string st1=“abc”; string st2=x.ToStirng() + “abc”; string st=string.Format(“value={0:f3} st={1}\n”, x, st1);
String do it, debug it string s = "abcdef“, s1 = "abc"; if( s1==s ) Console.WriteLine("s1==s"); else if (s1 != s) Console.WriteLine("s1!=s"); Console.WriteLine(s1+" + " + s); s1 = s.ToUpper(); s1 = s1.ToLower(); int n=12345; s1 = n.ToString(); s1 = s.Substring(2); s1 = " " + s + " "; s1 = s1.TrimStart(); s1 = s1.TrimEnd();
小结 • 本章主要讲了数组和字符串处理的基础知识。在C#中,数组是通过在类型和变量名之间放置一个空方括号来进行说明。C#数组可以是一维数组、多维数组或者是交错数组。字符串的处理在本章中我们讨论了几个基本的技巧,字符串处理的方法我们在表中大多已经列出,使用字符串处理的各种方法以及多个方法的组合可以达到很好的效果。