字符串常用方法:

属性: Length获取字符串中字符的个数

IsNullOrEmpty()   静态方法,判断为null或者为“”

ToCharArray() 将string转换为char[]

ToLower()   小写,必须接收返回值(因为字符串的不变性)

ToUpper()  大写

Equals()  比较两个字符串是否相同,忽略大小写的比较,StringComparation

IndexOf() 如果没有找到对应的数据,返回-1

LastIndexOf() 如果没有找到对应的数据,返回-1

Substring()   //2个重载,截取字符串

Split()   //分割字符串

Join()    静态方法

Format()  静态方法

Repalce()

举例: IsNullOrEmpty()   静态方法,判断为null或者为“”

class Program{static void Main(string[] args){//string msg = "你好,China";//string msg = "";string msg = null;//  msg.Length后面会报错//判断字符串是否为空//if (msg == "")if (string.IsNullOrEmpty(msg)){Console.WriteLine("空字符串!!!!");}else {Console.WriteLine("非空字符串!!!!");}Console.WriteLine(msg.Length);Console.ReadKey();}}

字符串的不可变性

    class Program{static void Main(string[] args){//字符串的不可变性指的是字符串一旦声明就不可改变string s1 = "abc";s1 = s1 + "d";Console.WriteLine(s1);   //输出abcd
            Console.ReadKey();}}

ToUpper()  大写

    class Program{static void Main(string[] args){//string msg = "hEllo";////字符串修改完成后必须接收返回值,因为字符串具有不可变性,无法直接修改原来的字符串//msg=msg.ToUpper();//Console.WriteLine(msg);//Console.ReadKey();
        }}

为什么字符串中的equals方法和==不能判断两个对象是否相同呢?因为字符串中有一个equals方法时判断字符串只要每个字符相同就返回true,并且字符串类型对运算符==进行了重载,也是调用的equals()方法!所以通过equals方法和==不能判断两个对象是否相同!

  class Program{static void Main(string[] args){string s1 = "abc";string s2 = "abc";Console.WriteLine(s1.Equals(s2));  //trueConsole.WriteLine(s1 == s2);         //trueConsole.WriteLine(object.ReferenceEquals(s1, s2));  //true
            Console.ReadKey();
        }}

此时s1和s2确实为同一个对象, string s1 = "abc";  string s2 = "abc"; 这是因为字符串的“暂存池”(字符串池,字符串拘留池)特性 与下面的
string s1 = new string(new char[]{'a','b','c'});
string s2 = new string(new char[] { 'a','b','c' });
效果不一样,只要出现了new关键字,就表示一定会创建一个新对象
class Program{static void Main(string[] args){string s1 = new string(new char[]{'a','b','c'});string s2 = new string(new char[] { 'a','b','c' });Console.WriteLine(s1.Equals(s2));  //trueConsole.WriteLine(s1 == s2);         //trueConsole.WriteLine(object.ReferenceEquals(s1, s2));  //false
            Console.ReadKey();}}

IndexOf()  LastIndexOf()

class Program{static void Main(string[] args){string msg = "我爱你北京天安门,天安门上太阳升。我家不住天安门,天安门上有保安";int index = msg.IndexOf("天安门");     //5//int index = msg.LastIndexOf("天安门");  //25
            Console.WriteLine(index);Console.ReadKey();}}

Substring()   //截取字符串,2个重载,没有传递截取长度则截取到最后

    class Program{static void Main(string[] args){string msg = "听说过叶长种吗?";//从坐标为3的索引开始截取,截取长度为3msg=msg.Substring(3,3);Console.WriteLine(msg); // 结果为叶长种
            Console.ReadKey();}}

Split()   //分割字符串

 class Program{static void Main(string[] args){string msg = "乔丹|科比|叶长种";string[] name=msg.Split('|');for (int i = 0; i < name.Length; i++){Console.WriteLine(name[i]);}          Console.ReadKey();}}

 class Program{static void Main(string[] args){string msg = "乔丹|科比|叶长种||||||||詹姆斯";string[] name=msg.Split(new char[]{'|'},StringSplitOptions.RemoveEmptyEntries);for (int i = 0; i < name.Length; i++){Console.WriteLine(name[i]);}          Console.ReadKey();}}

    class Program{static void Main(string[] args){string msg = "乔丹|科比|叶长种||||||||詹姆斯";string[] name = msg.Split(new char[] { '|' }, 3, StringSplitOptions.RemoveEmptyEntries);//前截取三个  乔丹  科比  叶长种||||||||詹姆斯for (int i = 0; i < name.Length; i++){Console.WriteLine(name[i]);}Console.ReadKey();}}

Join()    静态方法

   class Program{static void Main(string[] args){string msg = "乔丹|科比|叶长种||||||||詹姆斯";string[] name=msg.Split(new char[]{'|'},StringSplitOptions.RemoveEmptyEntries);string full = string.Join("=====>",name);Console.WriteLine(full);Console.ReadKey();}}

Format()  静态方法

 class Program{static void Main(string[] args){//Console.WriteLine("我叫{0},今年{1}岁了,至今{2}","叶长种",25,"未婚");//Console.ReadKey();string msg = string.Format("我叫{0},今年{1}岁了,至今{2}", "叶长种", 25, "未婚");Console.WriteLine(msg);Console.ReadKey();}}

Repalce()

    class Program{static void Main(string[] args){string msg = "大家知道传值与引用的区别吗?请来问叶长重吧";msg = msg.Replace('重', '种');Console.WriteLine(msg);//输出:大家知道传值与引用的区别吗?请来问叶长种吧
            Console.ReadKey();}}

 class Program{static void Main(string[] args){string msg = "大家知道传值与引用的区别吗?请来问叶长重吧,哈哈哈哈";msg = msg.Replace('重', '种').Replace('哈', '嘿');Console.WriteLine(msg);Console.ReadKey();}}

字符串练习

输入一个字符串将其字符串以相反的顺序输出如abc输出cba

 class Program{static void Main(string[] args){//接收用户输入的字符串,将其中的字符以与输入相反的顺序输出。Console.WriteLine("请输入一个字符串:");string msg = Console.ReadLine();msg = ReverseString(msg);//for (int i = msg.Length-1; i >=0; i--)//{//    Console.Write(msg[i]); //}
            Console.Write(msg); Console.ReadKey();}private static string ReverseString(string msg){Char[] ch = msg.ToCharArray();for (int i = 0; i < ch.Length/2; i++){char temp = ch[i];ch[i] = ch[ch.Length - 1 - i];ch[ch.Length - 1 - i] = temp;}return new string(ch);}

接收用户输入的一句英文,把里面的单词以相反的顺序输出如 I Love You 输出 uoY evoL I

  class Program{static void Main(string[] args){//接收用户输入的一句英文,将其中的单词以与输入相反的顺序输出。Console.WriteLine("请输入一句话:");string msg = Console.ReadLine();string[] words = msg.Split(' ');for (int i = 0; i < words.Length; i++){words[i] = ReverseString(words[i]);}msg = string.Join(" ", words);Console.Write(msg);Console.ReadKey();}private static string ReverseString(string msg){Char[] ch = msg.ToCharArray();for (int i = 0; i < ch.Length / 2; i++){char temp = ch[i];ch[i] = ch[ch.Length - 1 - i];ch[ch.Length - 1 - i] = temp;}return new string(ch);}}

分割年月日

    class Program{static void Main(string[] args){Console.WriteLine("请输入日期:");string date = Console.ReadLine();string[] parts = date.Split('年', '月', '日');Console.WriteLine("年:{0}", parts[0]);Console.WriteLine("月:{0}", parts[1]);Console.WriteLine("日:{0}", parts[2]);Console.ReadKey();}}

把csv文件中的联系人姓名和电话号码显示出来

 class Program{static void Main(string[] args){string[] lines = File.ReadAllLines("info.csv",Encoding.Default);//循环遍历每一行for (int i = 0; i < lines.Length; i++){string[] parts= lines[i].Replace("\"","").Split(','); Console.WriteLine("姓名:{0};电话{1}", parts[0] + parts[1], parts[2]);}Console.ReadKey();}}

123-456---7---89-----123----2把类似的字符串中重复符号”-”去掉,既得到123-456-7-89-123-2. split()、

 class Program{static void Main(string[] args){string msg = "123-456---7---89-----123----2";string[] parts = msg.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries);string str = string.Join("-", parts);Console.WriteLine(str);Console.ReadLine();}}

从文件路径中提取出文件名(包含后缀) 。比如从c:\a\b.txt中提取出b.txt这个文件名出来。

    class Program{static void Main(string[] args){string path = @"c:\a\b.txt";// 查找最后一个\出现的索引位置int index = path.LastIndexOf('\\');string filename = path.Substring(index + 1);Console.WriteLine(filename);Console.ReadKey();}}

192.168.10.5[port=21,type=ftp]     192.168.10.5[port=21]

    class Program{static void Main(string[] args){string msg = "192.168.10.5[port=21,type=ftp]";string[] parts = msg.Split(new string[] { "[port=", ",type=", "]" }, StringSplitOptions.RemoveEmptyEntries);Console.WriteLine("IP:{0}\r\n  Port:{1} \r\n service:{2}", parts[0], parts[1], parts.Length == 3 ? parts[2] : "http");Console.ReadKey();}}

求员工工资文件中,员工的最高工资、最低工资、平均工资

    class Program{static void Main(string[] args){string[] lines = File.ReadAllLines("salary.txt", Encoding.Default);string[] parts = lines[0].Split('=');//假设第一个人的工资是最高工资string maxName = parts[0];int maxSalary = Convert.ToInt32(parts[1]);//假设第一个人的工资是最低工资string minName = parts[0];int minSalary = Convert.ToInt32(parts[1]);int sum = minSalary;//用来存储总工资。int count = 1;//循环遍历其他人的工资进行比对,计算最高工资与最低工资for (int i = 1; i < lines.Length; i++){//跳过空行if (lines[i].Length != 0){count++;string[] lineParts = lines[i].Split('=');int salary = Convert.ToInt32(lineParts[1]);//进行最高工资的比较if (salary > maxSalary){maxSalary = salary;maxName = lineParts[0];}//进行最低工资的比较if (salary < minSalary){minSalary = salary;minName = lineParts[0];}sum += salary;}}Console.WriteLine("最高工资:{0}  最低工资:{1}", maxSalary, minSalary);Console.WriteLine("平均工资:{0}", sum * 1.0 / count);Console.ReadKey();}}

“北京传智播客软件培训,传智播客.net培训,传智播客Java培训。传智播客官网:http://www.itcast.cn。北京传智播客欢迎您。”。在以上字符串中请统计出”传智播客”出现的次数。找IndexOf()的重载。 
    class Program{static void Main(string[] args){string msg = "北京传智播客软件培训,传智播客.net培训,传智播客Java培训。传智播客官网:http://www.itcast.cn。北京传智播客欢迎您。";string defaultWord = "传智播客";int count = 0;int index = 0;while ((index = msg.IndexOf(defaultWord, index)) != -1){count++;index = index + defaultWord.Length;}Console.WriteLine("次数是:{0}", count);Console.ReadKey();}}

面向对象计算器-抽象类版本

抽象计算器类

 /// <summary>/// 计算器的一个父类/// </summary>public abstract class JiSuanQi   // 这个类必须定义为抽象类 前面加abstract
    {public JiSuanQi(int n1, int n2){this.Number1 = n1;this.Number2 = n2;}public int Number1{get;set;}public int Number2{get;set;}public abstract double JiSuan();}

加法类:

  /// <summary>/// 计算加法的类/// </summary>public class Add : JiSuanQi{public Add(int n1, int n2): base(n1, n2){this.Number1 = n1;this.Number2 = n2;}public override double JiSuan(){return this.Number1 + Number2;}}

减法类:

    /// <summary>/// 计算减法的类/// </summary>public class Sub : JiSuanQi{public Sub(int n1, int n2): base(n1, n2){this.Number1 = n1;this.Number2 = n2;}public override double JiSuan(){return this.Number1 - Number2;}}

乘法类:

 /// <summary>/// 计算乘法的类/// </summary>public class Mult : JiSuanQi{public Mult(int n1, int n2): base(n1, n2){this.Number1 = n1;this.Number2 = n2;}public override double JiSuan(){return this.Number1 * Number2;}}

除法类

   /// <summary>/// 计算除法的类/// </summary>public class Div : JiSuanQi{public Div(int n1, int n2): base(n1, n2){this.Number1 = n1;this.Number2 = n2;}public override double JiSuan(){return this.Number1 / Number2;}}

主程序

    class Program{static void Main(string[] args){while (true){JiSuanQi jsq = null;Console.WriteLine("number1 :");int n1 = Convert.ToInt32(Console.ReadLine());Console.WriteLine("操作符");string czf = Console.ReadLine();Console.WriteLine("number2 :");int n2 = Convert.ToInt32(Console.ReadLine());switch (czf){case "+":jsq = new Add(n1, n2);break;case "-":jsq = new Sub(n1, n2);break;case "*":jsq = new Mult(n1, n2);break;case "/":jsq = new Div(n1, n2);break;default:break;}if (jsq != null){double result=jsq.JiSuan();Console.WriteLine("结果:{0}",result);}}}}

提取方法:

    class Program{static void Main(string[] args){while (true){JiSuanQi jsq = null;Console.WriteLine("number1 :");int n1 = Convert.ToInt32(Console.ReadLine());Console.WriteLine("操作符");string czf = Console.ReadLine();Console.WriteLine("number2 :");int n2 = Convert.ToInt32(Console.ReadLine());jsq = GetJiSuan(n1, czf, n2);if (jsq != null){double result=jsq.JiSuan();Console.WriteLine("结果:{0}",result);}}}//简单工厂设计模式private static JiSuanQi GetJiSuan(int n1, string czf, int n2){JiSuanQi jsq=null;switch (czf){case "+":jsq = new Add(n1, n2);break;case "-":jsq = new Sub(n1, n2);break;case "*":jsq = new Mult(n1, n2);break;case "/":jsq = new Div(n1, n2);break;default:break;}return jsq;}}

值类型与引用类型:

 class Program{static void Main(string[] args){//// 值类型, 栈////int  short byte char bool double float struct enum decimal ////引用类型 string 数组 类 接口 委托 ////堆//string s = "a";//s = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";////值类型//int n = 100;//int m = n;//m = m + 1;//Console.WriteLine(n);  // 100//Console.ReadKey();//引用类型Person p = new Person();p.Age = 100;Person p1 = p;p1.Age = 120;Console.WriteLine(p.Age); //120
            Console.ReadKey();}}public class Person{public int Age{get;set;}}

练习1

  class Program{static void Main(string[] args){//int n = 10;//M1(n);//Console.WriteLine(n);//10//Console.ReadKey();//Person p = new Person();//p.Age = 100;//M2(p);//Console.WriteLine(p.Age);//101//Console.ReadKey();//Person p = new Person();//p.Age = 100;//M3(p);//Console.WriteLine(p.Age);//1000//Console.ReadKey();//Person p = new Person();//p.Age = 100;//M4(p);//Console.WriteLine(p.Age);//100//Console.ReadKey();//string name = "科比";//M5(name);//Console.WriteLine(name);//科比//Console.ReadKey();//int[] arrInt = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };//M6(arrInt);//for (int i = 0; i < arrInt.Length; i++)//{//    Console.WriteLine(arrInt[i]); // 1, 2, 3, 4, 5, 6, 7, 8//}//Console.ReadKey();   //int[] arrInt = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };//M7(arrInt);//for (int i = 0; i < arrInt.Length; i++)//{//    Console.WriteLine(arrInt[i]); //100,100,100,100,100,100,100,100//}//Console.ReadKey();
        }private static void M7(int[] arrInt){for (int i = 0; i < arrInt.Length; i++){arrInt[i] = 100;}}private static void M6(int[] arrInt){arrInt = new int[arrInt.Length];for (int i = 0; i < arrInt.Length; i++){arrInt[i] = arrInt[i] * 2;}}private static void M5(string name1){name1 = "乔丹";}private static void M4(Person p1){p1 = new Person();p1.Age++;}private static void M3(Person p1){p1.Age = 1000;p1 = new Person();p1.Age = 200;}private static void M2(Person p1){p1.Age++;}private static void M1(int m){m++;}}public class Person{public int Age{get;set;}}

练习2

    class Program{static void Main(string[] args){//int n = 10;//M1(ref n);//Console.WriteLine(n);//11//Console.ReadKey();//Person p = new Person();//p.Age = 100;//M2(ref p);//Console.WriteLine(p.Age);//101//Console.ReadKey();//Person p = new Person();//p.Age = 100;//M3(ref p);//Console.WriteLine(p.Age);////Console.ReadKey();//Person p = new Person();//p.Age = 100;//M4(ref p);//Console.WriteLine(p.Age);//1//Console.ReadKey();//string name = "科比";//M5(ref name);//Console.WriteLine(name);//乔丹//Console.ReadKey();//int[] arrInt = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };//M6(ref arrInt);//for (int i = 0; i < arrInt.Length; i++)//{//    Console.WriteLine(arrInt[i]); //0,0,0,0,0,0,0,0//}//Console.ReadKey();  //int[] arrInt = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };//M7(ref arrInt);//for (int i = 0; i < arrInt.Length; i++)//{//    Console.WriteLine(arrInt[i]); //100,100,100,100,100,100,100,100//}//Console.ReadKey();
        }private static void M7(ref int[] arrInt){for (int i = 0; i < arrInt.Length; i++){arrInt[i] = 100;}}private static void M6(ref int[] arrInt){arrInt = new int[arrInt.Length];for (int i = 0; i < arrInt.Length; i++){arrInt[i] = arrInt[i] * 2;}}private static void M5(ref string name2){name2 = "乔丹";}private static void M4(ref Person p1){p1 = new Person();p1.Age++;}private static void M3(ref Person p1){p1.Age = 1000;p1 = new Person();p1.Age = 200;}private static void M2(ref Person p1){p1.Age++;}//值传递,传递的是栈中的内容,(对于值类型,栈中的内容就是对应的数据。对于引用类型栈中内容就是对象的地址)//引用传递,传递的是栈本身的地址,多个变量名实际上指向的是同一个栈变量。//引用传递必须使用ref关键字修饰。在方法调用的时候传递参数的时候也必须加ref 关键字private static void M1(ref int m){m++;}}public class Person{public int Age{get;set;}}

转载于:https://www.cnblogs.com/yechangzhong-826217795/p/4059147.html

04---Net基础加强相关推荐

  1. Maven-学习笔记04【基础-Maven生命周期和概念模型图】

    Java后端 学习路线 笔记汇总表[黑马程序员] 黑马程序员(腾讯微云)Maven基础讲义.pdf Maven-学习笔记01[基础-Maven基本概念] Maven-学习笔记02[基础-Maven的安 ...

  2. JQuery-学习笔记04【基础——JQuery基础案例】

    Java后端 学习路线 笔记汇总表[黑马程序员] JQuery-学习笔记01[基础--JQuery基础]--[day01] JQuery-学习笔记02[基础--JQuery选择器] JQuery-学习 ...

  3. iOS学习笔记-105.多线程04——CGD基础

    多线程04CGD基础 一CGD简介 1 什么是GCD 2 GCD的优势 二任务和队列 1 GCD中有2个核心概念 2 GCD的使用就2个步骤 三执行任务 1 执行任务的方法 2 同步和异步的区别 3 ...

  4. 寄存器(CPU工作原理)04 - 零基础入门学习汇编语言09

    第二章:寄存器(CPU工作原理)04 让编程改变世界 Change the world by program 段的概念 错误认识: 内存被划分成了一个一个的段,每一个段有一个段地址. 其实是: 内存并 ...

  5. DLL技术应用04 - 零基础入门学习Delphi47

    DLL技术应用04 让编程改变世界 Change the world by program 利用DLL实现窗体重用 利用 Delphi 的 DLL 功能,不但能够实现过程和函数重用,而且还可以实现窗体 ...

  6. 函数04 - 零基础入门学习C语言35

    第七章:函数04 让编程改变世界 Change the world by program 上节课的练习简单讲解,给力!! 1.自己实现pow()函数并尝试验证--   2.猜想下sqrt()函数的原理 ...

  7. 指针04 - 零基础入门学习C语言44

    第八章:指针04 让编程改变世界 Change the world by program 小结 归纳起来, 如果有一个实参数组, 想在函数中改变此数组中的元素的值, 实参与形参的对应关系有以下4种情况 ...

  8. Exchange 2016部署实施案例篇-04.Ex基础配置篇(下)

    上二篇我们对全新部署完成的Exchange Server做了基础的一些配置,今天继续基础配置这个话题. DAG配置 先决条件 首先在配置DGA之前我们需要确保DAG成员服务器上磁盘的盘符都是一样的,大 ...

  9. 文件系统04 - 零基础入门学习Delphi37

    文件系统04 让编程改变世界 Change the world by program 记录型文件的记录数 记录文件中的记录是顺序排列的,每条记录都有一个编号,记录编号从 0 开始. 因此在包含N个记录 ...

  10. AI算法工程师 | 04人工智能基础-高等数学知识强化(二)一元函数微分学

    文章目录 数学知识 之 一元函数微分学 一.导数的概念 二.导数的几何意义与物理意义 三.求导公式 四.导数的用途 五.高阶导数 六.一元函数微分学的几何应用 导数与函数单调性的关系 极值定理 导数与 ...

最新文章

  1. k均值聚类图像分割matlab代码_用K均值聚类法为人类拍摄的首张黑洞照片进行分割...
  2. Tomcat官方文档关于数据源配置的内容
  3. Python中的range和xrange区别
  4. FPGA篇(十二)仿真中 `timesclae的用法
  5. php将上传的图片转为base64,html5实现把上传的图片转成base64编码在显示(代码实例)...
  6. 获取打开文件的路径和文件名
  7. Struts2之文件上传(单文件/多文件)
  8. VMware Ubuntu虚拟机卡顿慢 解决方法大全
  9. plsql导出表结构语句
  10. 自用frp服务器分享及客户端配置连接教程
  11. kobo glo原系统设置
  12. 该设备正在使用中.请关闭可能使用该设备的所
  13. iOS中 @synthesize 和 @dynamic 区别
  14. 医疗管理系统-检查项管理
  15. 我手机上常用的app和常访问的网站
  16. 纯HTML5+CSS3仿B站播放页
  17. 【conda环境下如何安装rdkit】
  18. 在CentOS7上安装Drone搭建CI持续集成环境
  19. sw模型生成urdf文件的详细流程
  20. yii2 打开GII 的配置

热门文章

  1. UGUI的InputField
  2. Redis 6.0 源码阅读笔记(2) -- Redis 多线程原理
  3. go - json -struct
  4. 状态位字段使用char(1)还是tinyint(1)?
  5. hashmap扩容_原创 | 我说我了解集合类,面试官竟然问我为啥HashMap的负载因子不设置成1!?
  6. **踩坑之通用Mapper中 Mapper.selectByExample(example)**的返回
  7. [渝粤教育] 中国地质大学 数据结构 复习题
  8. 【渝粤题库】陕西师范大学180213《消费经济学》作业 (高起本)
  9. 【渝粤题库】陕西师范大学209016《管理心理学》作业
  10. Python进阶(一)Python中的内置函数、内置方法、私有属性和方法详解