一、概念类
①、集合(ArrayList),泛集合(List<>),哈希表(Hashtable),字典(Dictionary<>)区别
NN~~不知道存什么类型,不知道存多少个------集合(ArrayList)-------需要导入using System.Collections命名空间。
NY~~知道存什么类型,不知道存多少个------泛集合(List< >)------不需要导入命名空间。
YY~~知道存什么类型,知道存多少个------数组(int[ ])------不需要导入命名空间。
键值为Object类型,即任意类型------哈希表(Hashtable)------需要导入using System.Collections命名空间。
键值为string类型,char类型------字典(Dictionary<>)------不需要导入命名空间。
总结:带有< >符号的都是知道什么类型的,<>符号中放类型,不带这个符号的是随意类型即Object类型。
②、编码ANSI,Unicode,UTF-8分别代表什么?
ANSI:目前计算机中用的最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange 美国标准信息交换码),它已被国际标准化组织(ISO)定位国际标准,成为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。
Unicode:拓展在ASCII字元集。在严格的ASCII中,每个字元用7位元表示,或者电脑上普通使用的每字元有8位元素;而Unicode使用16位元字元素。这是的Unicode能够表示世界上所有的书写语言中可能用于电脑通讯的字元、象形文字和其他符号。Unicode最初打算作为ASCII的补充,可能的话,最终将替代他。考虑到ASCII是电脑中最具支配地位的标准,所以这的确是一个很高的目标。
UTF-8:是Unicode的一种变长字符编码又称万国码,由KenThompson与1992年创建。现在已经标准化为RFC 3629。UTF-8用1-6个字节编码Unicode字符,用在网页上可以可以统一页面显示中文简体繁体及其它语言(韩文等)。
二、图类
①、如果获取字符串中指定位置的char对象
三、代码类
①、Dictionary<>的使用
static void Main(string[] args)
{
Dictionary<char, string> dic = new Dictionary<char, string>(); //实例化一个字典类
//将常量字符串变量ChaiZi进行切割,切割空白项,并把切割结果赋值给chaizi字符串数组变量
string[] chaizi = ChaiZi.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < chaizi.Length ; i++) //遍历chaizi字符串数组变量
{
if(!dic.ContainsKey(chaizi[i][0])) //如果字典类中不包含chaizi字符串数组的第一个内容
{
dic.Add(chaizi[i][0], chaizi[i].Substring(1)); //那么将第一个内容加入到字典里作为键,通过Substring截取除第一个内容之外的作为字典的值
}
}
#region 文章
string text = "海贼王:有个男人他拥有世界上一切财富、名望和权势,他就是「海盗王」高路德•罗杰。在临死前说过这样一句话:让全世界的人都奔向大海「想要我的财宝吗?想要的话全就拿去吧……!";
#endregion
for (int i = 0; i < text.Length ; i++) //遍历文章
{
if(dic.ContainsKey (text[i])) //如果字典的键包含文章中的文本
{
Console.Write(dic[text[i]]); //那么将字典中的值写入到控制台
}
else
{
Console.Write(text[i]); //否则将文章文本写入到控制台
}
}
Console.ReadKey();
}
}
②、File的使用,各种方法
Console.WriteLine(DateTime.Now); //获取当前日期,时间
string path = @"C:\Users\Smile\Desktop\books.txt"; //定义文本路径及文本名称,path为路径,也为文件名称
string newpath = @"D:\books.txt";
File.Create(path); //①增 这个方法是在指定路径下创建一个文件,如果文件存在在,则覆盖给文件。
File.Delete(path); //②删 这个方法是删除制定路径下的文件,直接删除,不放入回收站,如果该路径下没有该文件,不报异常
bool result = File.Exists(path); //③判断是否存在,返回值为bool值
DateTime dt = File.GetCreationTime(path); //④获得文件创建时间
DateTime dt = File.GetLastAccessTime(path); //⑤获得文件访问时间
DateTime dt = File.GetLastWriteTime(path); //⑥获得最后修改时间
File.Move(path, newpath); //⑦把文件移动到指定的路径下,名称可改可不改,已存在便无法移动
File.Copy(path, newpath); //⑧把文件复制到制定的路径下,不可重复
File.Copy(path, newpath, true); //⑧如果遇到重复文件名,则用copy的第二个重载方便,便可以对相同文件进行覆盖
string[] str=File.ReadAllLines(path); //⑨一行一行的读,返回的是字符串数组
//Console.WriteLine(str); //数组想要显示出来,需要遍历显示,而非写入
for (int i = 0; i < str.Length; i++)
{
Console.WriteLine(str[i]);
}
string file = File.ReadAllText(path); //⑨直接读取整篇文章,返回的是字符串
Console.WriteLine(file); //字符串要显示出来,直接写入控制台即可
Console.ReadKey();
File.WriteAllLines(path, new string[] { "路飞", "索隆", "乌索普", "山治" }); //⑩写入 一行行写入
File.WriteAllText(path, "海贼王"); //⑩ 写入 整篇内容
File.WriteAllText(path, "罗杰", Encoding.UTF8); //⑩ 写入内容,覆盖原有文本。并设定另存为编码
//但上面的方法覆盖了原内容,那如何不覆盖直接添加呢?
File.AppendAllText(path, " 艾斯之父", Encoding.UTF8); //⑪ 写入内容保留原有文本
③、List<>的用法,求数字和,最大值,最小值,平均数
static void Main(string[] args)
{
List<int> listint = new List<int>(); //实例化一个泛集合
Random rand = new Random(); //实例化一个随机数
while (listint.Count!=10) //当泛集合的数量不等于10时循环,等于10时跳出
{
int num = rand.Next(0, 100); //定义一个随机数num:0-99
Console.WriteLine(num); //在控制台写入这些随机数
if (!listint.Contains(num)) //判断如果泛集合中不包含num
{
listint.Add(num); //则将num加入泛集合
}
}
//泛集合中如何求和,平均数,最大值,最小值?
Console.WriteLine("数字和为:{0},平均数为{1},最大数为{2},最小数为{3}", listint.Sum(),listint.Average (),listint.Max(),listint.Min());
Console.ReadKey();
//list方法:clear,insert,max,min,sum,sort,serverse等
}
④、火星文核心代码
static void Main(string[] args)
{
//将字符串ChaiZi进行切割,切除空格以及切除后的空白项,并将其结果赋值给字符串数组chaizi
string[] chaizi=ChaiZi.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
//chaizi[i]----卧臣卜
//chaizi[i][0]-----卧
//chaizi[i][1]-----臣
//chaizi[i][2]-----卜
Hashtable ht = new Hashtable(); //实例化一个哈希表
for (int i = 0; i < chaizi.Length ; i++) //遍历字符串数组chaizi,即卧臣卜
{
//判断哈希表中的键是否相同
//如果哈希表的键中未包含chaizi[i][0],即‘卧’,那么便将其key(卧)value(臣卜)加入到哈希表中
if (!ht.ContainsKey(chaizi[i][0])) //chaizi[i][0]获取字符串中指定位置的Char对象
{
ht.Add(chaizi[i][0], chaizi[i].Substring(1)); //向哈希表中添加key,value的值
}
}
//到此哈希表中有字和拆分好的字体
#region 文章
string text = "海贼王:有个男人他拥有世界上一切财富、名望和权势,他就是「海盗王」高路德•罗杰。在临死前说过这样一句话:让全世界的人都奔向大海「想要我的财宝吗?想要的话全就拿去吧……!";
#endregion
for (int i = 0; i < text.Length ; i++) //遍历文章
{
if(ht.ContainsKey (text[i])) //判断哈希表中是否有该文章内容
{
Console.Write(ht[text[i]]); //如果有则将哈希表中的值写入控制台
}
else
{
Console.Write(text[i]); //如果没有则直接将text[i]写入控制台
}
}
Console.ReadKey();
}
⑤、英汉翻译
static void Main(string[] args)
{
Hashtable ht = new Hashtable(); //实例化一个哈希表
string path = @"C:\Users\Smile\Desktop\dic.txt"; //创建一个路径及路径所在文本
string[] str = File.ReadAllLines(path, Encoding.Default); //按行读取路径中的文本,编码为默认ANSI
for (int i = 0; i < str.Length ; i++) //遍历读取出来的文本
{
//切除文本中的空格及空白项,并将切割出来的字符串数组赋值给字符串数组变量word
string[] word=str[i].Split(new char[] { ' ' },StringSplitOptions.RemoveEmptyEntries);
string value = ""; //定义哈希表中的值value
for (int a = 1; a < word.Length ; a++) //遍历切割出来的字符串数组
{
value += word[a]; //哈希表中值为word数组中除第一个以外的所有内容相加
}
if (!ht.ContainsKey(word[0])) //如果哈希表中不包含key,字符串数组第一个内容
{
ht.Add(word[0],value); //那么就将第一个内容加入哈希表中作为哈希表中代表key,把value加入哈希表中代表值
}
else //把相同单词的中文意思加在一起
{
ht[word[0]] += value;
}
}
Console.WriteLine("请输入单词"); //在控制台写入一行内容
string userword = Console.ReadLine(); //读取用户在控制台上输入的内容,并将其赋值给变量userword
if(ht.ContainsKey(userword)) //如果哈希表中的key包含用户输入的内容
{
Console.WriteLine(ht[userword]); //则将哈希表中key所对应的值写入控制台
}
else
{
Console.WriteLine("没有该单词,请重新输入"); //在控制台写入提示内容
}
Console.ReadKey();
}