当前位置: 代码迷 >> C# >> c#运用——简化汉字转繁体字
  详细解决方案

c#运用——简化汉字转繁体字

热度:56   发布时间:2016-05-05 03:41:32.0
c#运用——简体字转繁体字

下面通过用c#的字符串和Hashtable类来实现一个简体字转繁体字的功能,然后分析一些c#的语法

源码

using System;using System.Collections;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 简体字转繁体字{    class Program    {        static void Main(string[] args)        {            string[] simpleStrs = File.ReadAllLines(@"E:\code\test\简体字.txt",Encoding.Default);            string simpleStr = String.Join("", simpleStrs);            string[] complexStrs =  File.ReadAllLines(@"E:\code\test\繁体字.txt",Encoding.Default);            string complexStr = String.Join("", complexStrs);            //Console.WriteLine(complexStr);            Hashtable transform=new Hashtable();            for (int i = 0; i < simpleStr.Length; i++)            {                transform.Add(simpleStr[i], complexStr[i]);            }            Console.WriteLine("请输入一句话");            string originalStr = Console.ReadLine();            StringBuilder stb = new StringBuilder();            for (int i = 0; i < originalStr.Length; i++)            {                if (transform.Contains(originalStr[i]))                {                    stb.Append(transform[originalStr[i]]);                }                else                {                    stb.Append(originalStr[i]);                }            }            Console.WriteLine("转化为繁体字为:");            Console.WriteLine(stb);            Console.ReadKey();        }    }}

程序运行结果

程序运行结果

值类型和引用类型

区别:
1. 值类型和引用类型在内存上存储的地方不一样
2. 传递值类型和引用类型的时候,传递的方式不一样。
值类型:int、double、bool、struct、enum 等存储在栈中。
引用类型:string、自定义类等,应用类型的值存在堆中,在栈中存的是堆中的地址。
4. 字符串的不可变性:指的是堆里面的内容不可变,这种内容具有唯一性,所以如果你有很多个string都叫”abc”,实际上”abc”在,栈里的内容可以变。
5. 即时窗口可以查看内存地址。
6. 如果是在想改变字符串中某个字符怎么办呢,首先将字符串转换为char类型的数组,这个数组存在栈区,调用ToCharArray();返回char类型数组,然后改变,然后调用string(char [])这个构造函数再产生一个新String;
7. 我们大量对字符串进行拼接赋值操作时,内存中会产生大量的垃圾,这是我们需要StringBuilder,

string的方法

函数名 作用
Equals() 比较字符串,第二个参数可设为StringComparison.OrdinalIgnoreCase
Split() 字符串分割,第一个参数可以是不需要的那些字符构成的数组, 第二个参数StringSplitOption.RemoveEmptyEntries 把空项移除,返回分割出来的字符串数组;可以用来处理Jeson数据等格式化数据;
IndexOf 字符串中第一次出现某个序列的位置
Trim() 去除字符串两边的空格
Join() 把字符串数组格式化为字符串

继承注意事项

继承构造函数 在子类构造函数的函数列表里只能写:base(,,)不能写:父类名(,,,)

当子类隐藏父类的成员方法,可以在返回类型前加关键字new 来隐藏从父类哪里继承来的成员,隐藏的后果是子类调用不到父类的成员;

集合

里氏转换:

就是子类对象可以赋值给父类引用(隐式转换),如果父类引用指向的是子类对象,可以把父类强行转换为子类(显式转换),当然用is或as可以判断是不是那种对象;
is : 判断类型,如果是的那就返回true 否则返回false;需测试没有关系的类之间的情况;
as: 进行强转,如果成功就返回转换得到的那个对象,失败就返回null;

ArrayList

是一个集合:我们主要用泛型类型,这个类型不怎么用了 Array 类型一定,然后长度可变;
表示添加单个数据,其实都是引用无所谓的啦。很多数据的一个集合,相对于数组有两大好处;类型可以不一样,长度可变。

函数名 作用
add(object) 可以放object的任意对象
addRange 添加集合的时候使用
clear 移除所有的元素
Remove 根据对象删除
RemoveAt 根据下标删除
RemoveRange 根据下标范围删除
Contains 判断是否包含指定的对象
sort 排序,有些不同类型的元素排序没有意义
Reverse 逆序
Insert 插入对象
InsertRange 插入一定范围的元素

有个Count属性和别的对象的Length属性是一样的。
size() Capacity属性表示已分配的容量 刚开始为4,然后每次扩大一倍。

Hashtable

是键值对集合;(table开头小写哦)
在键值对集合中,是根据键找值的,用键做下标; 用foreach循环来遍历键值对集合,;
hashtable里面有两个重要的属性一个是Keys是键的集合,一个是Values是值的集合。键只能出现一次,值可以出现很多次;

函数名 作用
Add(key,value) 在现有HashTable里面试图添加一个键值对
Contains(key) 在现有HashTable判断是否包含某个键
ContainsKey(key) 在现有HashTable判断是否包含某个键
ContainsValue(value) 在现有HashTable判断是否包含某个值

ContainsValue
添加键值对的时候可以使用Add,也可以使用ht[键]=值(调用insert); 可以使用Contains和ContainsKey来判断是否包含某个键,用ContainsValue判断是否包含某个值;

foreach

foreach的效率比for要低一点;

var

c#是一门强类型语言,在代码当中必须对每一个变量的类型有一个明确的定义;
var用于弱类型中,var根据值能够推断出来类型,object有个GetType可以获取这个对象的类型。隐式类型的局部变量必须初始化,var一般用在foreach里面

path

是静态类
在System.IO里面,

函数名 作用
GetFileName(“文件的全路径”) 获取当前文件的文件名
GetFileNameWithoutExtension 获得不包括扩展名的文件名
GetExtension 获得文件的扩展名
GetDirectoryName 获得当前文件夹的名字
GetFullPath 获取当前文件的全路径

string [] contents=File.ReadAllLines(path,Encoding.Default);
Directory.GetFiles(path,”*.txt”);//第二个选项是正则表达式匹配;这个是Directory类的静态方法;这个返回的是带目录名的文件名
DirectoryInfo类的对象有一个GetFiles和EnumerateFiles的方法也可以,返回的是不带目录名的文件名;
DirectoryInfo类有另外的实例方法GetDirectory和EnumerateDirectory()可以获取子文件夹的信息;

File类

是静态类

方法名 作用
Create(“”) 根据目录试图创建一个文件,如果文件已存在截取内容为空
Delete(“”) 根据目录试图删除一个文件,如果文件不存在
Copy(源文件,目标文件) 复制源文件,试图粘贴到目标文件
move(源文件,目标文件) 移动一个文件到另一个地方
ReadAllBytes() 从文件中读取一个字节数组
Encoding.Default.GetString(字节数组) 把字节数组转换为字符串
Encoding.Default.GetBytes(字符串) 把字符串转换为字节数组
WriteAllBytes() 把字节数组写入文件里
  相关解决方案