05DotNet基本常用类库
1、String成员方法(常用)
bool Contains(String str);判断字符串对象是否包含给定的字符串;
bool StartsWith(String str);判断字符串对象是否以给定的字符串开始;
bool EndWith(String str);判断字符串是否以给定的字符串开始;
int IndexOf(char ch);返回指定字符在此字符串中第一次出现的索引
int IndexOf(String str);返回指定字符串在此字符串中第一次出现的索引
LastIndexOf:最后一次出现的位置
String Substring(int start);截取字符串。返回从指定位置开始截取后的字符串
string Substring(int start,int length) 截取字符串。返回从指定位置开始截取指定长度length的字符串
String ToLower(); 把字符串变成小写
String ToUpper(); 把字符串变成大写
String Replace(char oldChar,char newChar); 用新的字符去替换指定的旧字符
String Replace(String oldStr,String newStr); 用新的字符串去替换旧的字符串
String Trim(); 去除字符串两端的空格
String TrimStart(); 去除字符串开头的空格
String TrimEnd(); 去除字符串结尾的空格、
String Trim(params char[] trimChars); 去掉两端给定的字符
注意:String是不可变的,因此上面的操作都是生成新的字符串对象,要用返回值去取新的字符串
String[] Split(...):重载方法很多,字符串按照分隔符切割。案例:把字符串用","分割
案例:给一个全班数学考试成绩的字符串“50, 80,33,58,99, 82”,成绩用逗号分隔,有的成绩中可能有空格,有的地方逗号是英文、有的逗号是中文。统计班级的平均分。
//计算写在字符串的成绩的平均分 string score ="46,74 ,72,56,45 ,62"; string[] newScore = score.Replace(" ","").Replace(',',',').Split(','); int sum =0; for(int i =0; i < newScore.Length; i++) { sum +=Convert.ToInt32(newScore[i]); } Console.WriteLine(sum*1.0/newScore.Length);
String静态方法:
bool IsNullOrEmpty(string value); 判断字符串是否为null或者是空字符串;
bool Equals(string a,string b,StringComparison.OrdinalIgnoreCase);不区分大小写比较。案例验证码
string Join(string separator,params string[] value); 把一个数组(集合)用分隔符separator连接为一个字符串
2、StringBuilder
string str="111"+"42452"+"4624631"+"aaab";
字符串与字符串连接,每次连接都会生成一个String对象,当连接字符串较多时,就会产生较多的临时字符串对象
使用StringBuilder则拼接字符串则不会有临时字符串的问题
StringBuilder sb = new StringBuilder();
sb.Append("111");
sb.Append("42452");
...
因为Append方法是把this返回了,还可以sb.Append("111").Append("42452")...;
String s = sb.ToString();一次性生成拼接结果字符串即可
AppendLine 追加字符串后添加换行符
3、可空的int
int等是值类型,不能为null。有时想表达“不知道数字是多少”的时候,用int任何值表示都不合适
C#中可以用给“int?”表示“可空的int类型”。注意类型转换
4、日期
.Net使用DateTime类表示时间数据类型。DateTime属于结构体,因此也是值类型
DateTime.Now当前时间;
DateTime.Today当前日期;
可以通过Year、Month、Hour 等属性得到日期的年、月、日、小时等部分;也可以用构造函数根据给定的时间创建一个对象
5、异常概念
异常发生在程序发生的不正常情况下。异常以一个异常类对象的形式抛出,异常类描述异常信息、发生的位置
异常的给类为Exception。异常类一般都基础字Exception
异常的捕捉
try {string s =null;//s没有指向任何对象s.ToLower();//调用s所指向的对象的ToLower方法 } catch(NullReferenceException e) {Console.WriteLine("null引用错误:"+e.Message); }
try {//可能有问题的代码 } catch(异常类型异常变量) {//处理方式 } finally {//无论“有问题的代码”是否出错都要执行的代码 }
e就是发生异常异常类对象,变量名只要不冲突就任意
把可能发生异常的代码段放到try块中
catch捕获代码段中的NullReferenceException异常
如果捕捉到了,e就代表异常对象
一旦try里面有问题了,放弃执行try代码块中的代码,直接跳到catch里面执行。
finally语句块里面的代码无论是否有异常都会执行
好的异常处理习惯
不要只是把异常catch住什么都不做或者只是打印一下,这不是正常的“异常处理”。
不知道怎么处理就不要catch,出错比“把错误藏起爱”好。这样以为“不会出错了”,其实是把异常“吃掉了”,会让程序陷入逻辑混乱状态,要科学合理的处理异常
6、File文件类
File是静态类(无法被new)中的主要方法:
void Delete(string path);删除指定文件
bool Exists(string path);判断指定文件是否存在
string[] ReadAllLines(string path);将指定的文本文件中的内容读取到string数组中
string ReadAllText(string path):将文本文件读取为一个字符串
void WriteAllLines(string path, string[] contents):将一个string[]数组写入到指定文件中;
void WriteAllText(string path, string contents):将字符串contents写入到指定文本文件path中。
AppendAllText:向文件中附加内容;
Copy复制文件;
Move移动文件
7、Directory文件夹static类
CreateDirectory(string path):创建文件夹全路径
void Delete(string path, bool recursive):删除文件夹指定path, recursive表示是否也删除子文件及子文件夹。如果文件夹不为空, recursive=false,则抛异常;
bool Exists(string path):判断指定文件夹是否存在
EnumerateFiles、 EnumerateDirectories遍历文件和文件夹;
8、流(Stream)
File类提供了读写文本文件的方法,但是对于大文件不能用它提供的方法,占内存,需要一种“流式处理”的方法。
本地的照片是怎么样上传到QQ空间服务器的呢?播放器是怎么读取硬盘上的视频文件到播放器里面的,然后显示的呢?我们编写的word文档是怎保存到硬盘中的?这些都 涉及到IO(Input/Output)操作。
.Net将IO操作(文件、网络等)简化成流模型Stream,是抽象类,网络、文件、加密等都是不同的子类,最常用胡子类是FileSteam、MemoryStream等
使用Stream的时候虽然可以:FileStream fs = new FileStream(...),但是Stream fs = new FileInputStream(...);更好,在使用的变量类型提供的操作能满足的前提下,尽可能用父类、接口声明变量;
资源关闭
资源要使用完毕才能close,一旦close之后操作就会出错
9、using
没次资源关闭都要写一大堆代码太麻烦,C#中提供了一个using语法,对于实现了IDisposable接口的对象,可以简化:
public class MyFileStream:IDisposable {public void Dispose(){Console.WriteLine("Dispose了");} }
using(MyFileStream f1 =newMyFileStream()) { }
可以同时声明多个资源:
using (MyFile f1 =newMyFile()) using (MyFile f2 =newMyFile()) { }
10、FileSteam读取
字节流不适合读取内容中包含文本文档,容易造成数据错乱(byte[]中含有一半的汉字)。要用StreamReader
using (FileStream fs = new FileStream(@"D:\temp\1.txt", FileMode.Open)) {byte[] bytes = new byte[4];//fs.Read(bytes, 0, bytes.Length);//每次读取4个字节,下次Read的时候再读取最多4个byte//返回值为真正读取的字节数int len;/*len = fs.Read(bytes, 0, bytes.Length);Console.WriteLine(len);len = fs.Read(bytes, 0, bytes.Length);Console.WriteLine(len);len = fs.Read(bytes, 0, bytes.Length);Console.WriteLine(len);*///判断是否已经读到了最后while ((len = fs.Read(bytes, 0, bytes.Length)) > 0){//Console.WriteLine(len);//把byte数组转化为字符串//string s = Encoding.Default.GetString(bytes);string s = Encoding.Default.GetString(bytes, 0, len);Console.WriteLine(s);}}
复制文件
使用两个FileSteam配合完成文件拷贝:从源文件的FileStream中读取一部分内容,再写入到目标文件的FileStream中。
示例代码:
using (Stream inStream = new FileStream(@"d:\temp\C#.pdf", FileMode.Open)) using(Stream outStream = new FileStream(@"d:\temp\CSharp.pdf",FileMode.Create)) {byte[] bytes = new byte[1024*1024];//缓冲区大小:过小:降低速度;过大:占用内存int len;//读取并且返回读取长度给len,然后判断len读取的长度的值是否大于0while ((len = inStream.Read(bytes, 0, bytes.Length)) > 0){//将byte[]数组写入outStream中,0代表从这个数组的第几位开始写入,len代表写入多长//每次write都会从上次write的最后位置接着写入,outStream.Write(bytes, 0, len);//类似于GetString } }
11、Reader、Writer
(1)直接用Stream进行文本文件的读写会比较麻烦,因为要考虑文件的编码、中文字符等的问题。
(2)StreamReader、StreamWriter是用来读写字符流(character stream)的类,会帮着自动处理麻烦的问题。
using (Stream outStream = new FileStream(@"d:\temp\1.txt", FileMode.Create)) using(StreamWriter sw = new StreamWriter(outStream,Encoding.Default)) {sw.Write("你好a如鹏网");sw.WriteLine("hehe");sw.WriteLine("1111"); }
12、泛型List
1、数组长度是固定的,List<T>可以动态增删内容。List<T>是泛型的,可以在声明的时候指定放什么类型的数据。
List<int> list = new List<int>(); list.Add(1); list.Add(2); list.AddRange(new int[] { 1, 2, 3, 4, 5, 6 }); list.AddRange(list);//另一个list
2、如何遍历?
for (int i = 0; i < list1.Count; i++) {int num = list1[i];Console.WriteLine(num); }
3、集合转为数组
int[] nums = list.ToArray(); //List泛型集合可以转换为数组 List<string> listStr = new List<string>(); string[] str = listStr.ToArray();
13、泛型字典Dictionary
14、foreach
除了使用for遍历,实现了IEumerable接口的对象还可以使用foreach遍历
int[] nums = { 33, 55, 66 }; for (int i = 0; i < nums.Length; i++) {Console.WriteLine(nums[i]); }
转载于:https://www.cnblogs.com/pirates/p/4549991.html
05DotNet基本常用类库相关推荐
- 还在重复造轮子?Java开发人员必知必会的20种常用类库和API
介绍 一个有经验的Java开发人员特征之一就是善于使用已有的轮子来造车.<Effective Java>的作者Joshua Bloch曾经说过:"建议使用现有的API来开发,而不 ...
- Java 必知必会的 20 种常用类库和 API
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:为什么程序员都不喜欢使用switch,而是大量的 if--else if ?个人原创+1博客:点击前往,查看更多 ...
- java 常用类库_JAVA(三)JAVA常用类库/JAVA IO
成鹏致远 |lcw.cnblog.com|2014-02-01 JAVA常用类库 1.StringBuffer StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不同, ...
- JavaSE——常用类库(String类)
第1节 常用类库--String 因为String相对之前的类来说更加常用一些,所以对字符串类进行专门的整理. 1. 概述 String类表示字符串,Java中的所有字符串文字都实现为此类的实例. 字 ...
- JavaSE——常用类库(下)(Date、DateFormat、Calendar、System类)
第1节 常用类库(下) 六.java.util.Date Date类表示特定的时刻,精度为毫秒. 在JDK 1.1之前, Date类还有两个附加功能. 它允许将日期解释为年,月,日,小时,分钟和秒值. ...
- JavaSE——常用类库(上)(泛型、Objects、Math、ArraysBigDecimal类)
第1节 常用类库(上) 面向对象更多是思想上的东西,常用类库更多是工具上的东西,熟能生巧,多整理笔记. 一.泛型 1.1 概述 泛型,即"参数化类型".就是将类型由原来具体类型进行 ...
- JAVA计时函数的库_JAVA开发常用类库UUID、Optional、ThreadLocal、TimerTask、Base64使用方法与实例详解...
1.UUID类库 UUID 根据时间戳实现自动无重复字符串定义 // 获取UUID public static UUID randomUUID() // 根据字符串获取UUID public stat ...
- 类库java_Java类库和常用类库介绍
Java类库和常用类库介绍 2018-09-20 Java 类库和常用类库介绍--序 作者: zccst Java 类库概念: Java 的应用程序接口 (API) 以包的形式来组织,每个包提供了大量 ...
- JAVA笔记:Java常用类库
这篇文章我们来总结下Java中的常用类库.类库中的这些类和方法都是精心设计的,其运行的效率高.质量高,这些类和方法几乎包含在所有的Java软件中,所以可移植性很高. 下面我们详细学习下. String ...
- python数据分析常用类库(1.1)
###了解python数据分析常用类库 1.IPython–科学计算表准工具集的组成部分 是一个增强型的python shell,目的是提高编写 ,测试 ,调试python代码的速度 主要用于交互式数 ...
最新文章
- 一封会笑死人的校园情书
- go 方法接受者 是指针类型和非指针类型的 区别
- 通过分析来精简你的测试的6种方法(译)
- 手动加载spring, ApplicationContext怎么销毁
- 五大“领跑者”光伏基地概览
- android 颜色反转 api,来自Android camera2 API的图像数据在Galaxy S5上翻转和压缩
- 【P000-008】交易费计算系统,1.1版
- Unix环境高级编程学习笔记(二)
- sql server数据库还原备份 sql语句
- 人脸对齐(四)--CLM算法及概率图模型改进
- Linux网络编程 --------- Socket编程---最浅显易懂的介绍
- Office 2010 新特性 (二) Word 2010
- CenterOs git安装
- C#--反汇编工具ildasm.exe
- 小学计算机课知识点内容,小学信息技术教案九篇
- pr转场 18种不同风格图形元素小故障视频过渡pr视频转场模板
- apache 启动失败 查看日志
- 小米忙着营销,麻烦带上技术!
- flash和js通过什么类进行交互?
- Java项目:精美物流管理系统(java+SpringBoot+Vue+maven+Mysql)