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()把字节数组写入文件里
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值