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”,成绩用逗号分隔,有的成绩中可能有空格,有的地方逗号是英文、有的逗号是中文。统计班级的平均分。

  1. //计算写在字符串的成绩的平均分
    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

异常的捕捉

  1. try
    {string s =null;//s没有指向任何对象s.ToLower();//调用s所指向的对象的ToLower方法
    }
    catch(NullReferenceException e)
    {Console.WriteLine("null引用错误:"+e.Message);
    }

还有
  1. 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接口的对象,可以简化:

  1. public class MyFileStream:IDisposable
    {public void Dispose(){Console.WriteLine("Dispose了");}
    }

使用方法:
  1. using(MyFileStream f1 =newMyFileStream())
    {
    }

可以同时声明多个资源:

  1. 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)的类,会帮着自动处理麻烦的问题。

  1. 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、集合转为数组

  1. int[] nums = list.ToArray(); //List泛型集合可以转换为数组
    List<string> listStr = new List<string>();
    string[] str = listStr.ToArray();

13、泛型字典Dictionary
14、foreach

除了使用for遍历,实现了IEumerable接口的对象还可以使用foreach遍历

  1. 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基本常用类库相关推荐

  1. 还在重复造轮子?Java开发人员必知必会的20种常用类库和API

    介绍 一个有经验的Java开发人员特征之一就是善于使用已有的轮子来造车.<Effective Java>的作者Joshua Bloch曾经说过:"建议使用现有的API来开发,而不 ...

  2. Java 必知必会的 20 种常用类库和 API

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:为什么程序员都不喜欢使用switch,而是大量的 if--else if ?个人原创+1博客:点击前往,查看更多 ...

  3. java 常用类库_JAVA(三)JAVA常用类库/JAVA IO

    成鹏致远 |lcw.cnblog.com|2014-02-01 JAVA常用类库 1.StringBuffer StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不同, ...

  4. JavaSE——常用类库(String类)

    第1节 常用类库--String 因为String相对之前的类来说更加常用一些,所以对字符串类进行专门的整理. 1. 概述 String类表示字符串,Java中的所有字符串文字都实现为此类的实例. 字 ...

  5. JavaSE——常用类库(下)(Date、DateFormat、Calendar、System类)

    第1节 常用类库(下) 六.java.util.Date Date类表示特定的时刻,精度为毫秒. 在JDK 1.1之前, Date类还有两个附加功能. 它允许将日期解释为年,月,日,小时,分钟和秒值. ...

  6. JavaSE——常用类库(上)(泛型、Objects、Math、ArraysBigDecimal类)

    第1节 常用类库(上) 面向对象更多是思想上的东西,常用类库更多是工具上的东西,熟能生巧,多整理笔记. 一.泛型 1.1 概述 泛型,即"参数化类型".就是将类型由原来具体类型进行 ...

  7. JAVA计时函数的库_JAVA开发常用类库UUID、Optional、ThreadLocal、TimerTask、Base64使用方法与实例详解...

    1.UUID类库 UUID 根据时间戳实现自动无重复字符串定义 // 获取UUID public static UUID randomUUID() // 根据字符串获取UUID public stat ...

  8. 类库java_Java类库和常用类库介绍

    Java类库和常用类库介绍 2018-09-20 Java 类库和常用类库介绍--序 作者: zccst Java 类库概念: Java 的应用程序接口 (API) 以包的形式来组织,每个包提供了大量 ...

  9. JAVA笔记:Java常用类库

    这篇文章我们来总结下Java中的常用类库.类库中的这些类和方法都是精心设计的,其运行的效率高.质量高,这些类和方法几乎包含在所有的Java软件中,所以可移植性很高. 下面我们详细学习下. String ...

  10. python数据分析常用类库(1.1)

    ###了解python数据分析常用类库 1.IPython–科学计算表准工具集的组成部分 是一个增强型的python shell,目的是提高编写 ,测试 ,调试python代码的速度 主要用于交互式数 ...

最新文章

  1. 一封会笑死人的校园情书
  2. go 方法接受者 是指针类型和非指针类型的 区别
  3. 通过分析来精简你的测试的6种方法(译)
  4. 手动加载spring, ApplicationContext怎么销毁
  5. 五大“领跑者”光伏基地概览
  6. android 颜色反转 api,来自Android camera2 API的图像数据在Galaxy S5上翻转和压缩
  7. 【P000-008】交易费计算系统,1.1版
  8. Unix环境高级编程学习笔记(二)
  9. sql server数据库还原备份 sql语句
  10. 人脸对齐(四)--CLM算法及概率图模型改进
  11. Linux网络编程 --------- Socket编程---最浅显易懂的介绍
  12. Office 2010 新特性 (二) Word 2010
  13. CenterOs git安装
  14. C#--反汇编工具ildasm.exe
  15. 小学计算机课知识点内容,小学信息技术教案九篇
  16. pr转场 18种不同风格图形元素小故障视频过渡pr视频转场模板
  17. apache 启动失败 查看日志
  18. 小米忙着营销,麻烦带上技术!
  19. flash和js通过什么类进行交互?
  20. Java项目:精美物流管理系统(java+SpringBoot+Vue+maven+Mysql)

热门文章

  1. Tensorflow:dataset数据读取
  2. PGM:概率论基础知识
  3. 概率论:p(x|theta)和p(x;theta)的区别
  4. 力扣-5 最长回文子串
  5. upc 7833 生日蛋糕
  6. 11-散列1 电话聊天狂人(25 分)
  7. Spark:性能调优
  8. http 性能测试. Apache ab 使用.
  9. 第一讲:使用html5——canvas绘制奥运五环
  10. Pascal数据结构与算法