
s1,s2同一个地址。
字符串
(1)字符串的不可变性
(2)我们可以将字符串看作是char类型的一个只读数组
ToCharArray(); 将字符串转为数组
new string(char[] chs); 将数组转为字符串
一切类型都可以调用.ToString()方法转换成字符串类型。
s = new string(chs);
字符串提供的各种方法
(1)Length:获得当前字符串中字符的个数。
(2)ToUpper():将字符串转换成大写。
(3)ToLower():将字符串转换成小写。
(4)Equals():比较两个字符串,可以附加条件。
例如:string1.Equals(string2,StringComparison.OrdinalIgnoreCase)// 忽略大小写
(5) Split():分割字符串,返回字符串类型的数组。
StringSplitOptions.RemoveEmptyEntries 将返回的null消除
(6)Substring():截取字符串,在截取的时候包含要截取的那个位置。
(7)IndexOf():判断某个字符串在字符串中第一次出现的位置,返回int型,如果没有返回-1。
(8)LastIndexOf():判断某个字符串在字符串中最后一次出现的位置,返回int型,如果没有返回-1。
(9)StartWith():判断以…开始。
(10)EndWith():判断以…结束。
(11)Replace():将字符串中某个字符替换成一个新的字符串。
(12)Contains():判断某个字符串是否包含指定的字符串。
(13)Trim():去掉字符串中首尾的空白字符。
(14)TrimStart():去掉字符串前面的空白字符。
(15)TrimEnd():去掉字符串后面的空白字符。
(16)string.IsNullOrEmpty():判断一个字符串是否为空或者为null。
(17)string.Join():将数组按照指定的字符串连接,返回一个字符串。
(5)Split():字符串的分割,返回字符串类型的数组


using System;using System.Diagnostics;using System.Text;namespace _057_面对对象继承_04_字符串的方法{class Program{static void Main(string[] args){//string s1 = "张三";//string s2 = "张三";#region 将字符串看作是char类型的一个只读数组////可以将字符串看作是char类型的一个只读数组//string s = "abcdefghijklmnopqrstuvwxyz";////s[0] = 'b'; 报错,因为是只读的。////如果要改变字符串中某一元素个体,首先将字符串转换为char类型的数组//char[] chs = s.ToCharArray();//chs[0] = 'b';////将字符串数组转为字符串//s = new string(chs);////看作char类型的只读数组,所以我们可以通过下标去访问字符串中的某一个元素//Console.WriteLine(s[0]);#endregion#region 字符串方法// 一 Length 字符串长度//Console.WriteLine("请输入一个字符串:");//string ssss = Console.ReadLine();//Console.WriteLine("这个字符串的长度为:{0}", ssss.Length);//二 比较字符串(无视大小写)Console.WriteLine("请输入一个字符串:");string lessonOne = Console.ReadLine();//将字符串转换为大写//lessonOne = lessonOne.ToUpper();Console.WriteLine("请输入另一个字符串:");string lessonTwo = Console.ReadLine();//lessonTwo = lessonTwo.ToUpper();//lessonTwo.ToLower();//转换为小写//if (lessonOne==lessonTwo)//Equals 用来比较两个字符串 if (lessonOne.Equals(lessonTwo,枚举类型))if (lessonOne.Equals(lessonTwo, StringComparison.OrdinalIgnoreCase))//忽略大小写{Console.WriteLine("两个字符串相同~");}else{Console.WriteLine("两个字符串不同!");}//三 分割字符串Split //返回值类型为 数组//StringSplitOptions.RemoveEmptyEntries 将返回的null消除string sp = "I 2 _ ,,,lov e y+o=u ";char[] ch = { ' ', '2', '_', '+', '=', ',' };string[] str = sp.Split(ch,StringSplitOptions.RemoveEmptyEntries);for (int i = 0; i < str.Length; i++){Console.Write(str[i]);}Console.WriteLine();//Split练习 2021-09-04 --> 2021年09月04日string date = "2021-9-4";string[] Date = date.Split('-', StringSplitOptions.RemoveEmptyEntries);Console.WriteLine("{0}年{1}月{2}日", Date[0], Date[1], Date[2]);//Date[0] += '年';//Date[1] += '月';//Date[2] += '日';//for (int i = 0; i < Date.Length; i++)//{// Console.Write(Date[i]);//}//Console.WriteLine();//四 判断字符串是否还有子串value,bool Contains(string value);//字符串替换 string Replace(string oldValue, string newValue);string name = "韦晓龙";if (name.Contains("龙"))//字符串是否还有子串value{name = name.Replace("龙", "*");//字符串替换}Console.WriteLine(name);//五 截取字符串 string Substring(int);string Mood = "今天天气好啊,爷心情好哇";//Mood = Mood.Substring(7);//截取字符串至末尾Mood = Mood.Substring(7,3); //截取字符串,限定长度Console.WriteLine(Mood);//六 判断字符串是否以子串value开始/结束 bool StartWith/EndWith(string value);string Weather = "今天是一个风雨交加的暴风雪天";if (Weather.StartsWith("今天")){Console.WriteLine("Yes");}else{Console.WriteLine("No");}//七 取子串value第一次出现的位置 int IndexOf(string value);// 取子串value最后一次出现的位置int LastIndexOf(string value);string words = "qwertyuiopasdfghjklzxcvbnmdhawyubfawdnuiasjfbjbcxksd";int Index1 = words.IndexOf('d');int Index2 = words.LastIndexOf('d');Console.WriteLine(Index1);Console.WriteLine(Index2);//LastIndexOf Substringstring path = @"c:\d\s\a\dw\r\we\t\rg\铃原爱蜜莉.avi";int index = path.LastIndexOf("\\");path = path.Substring(index+1);Console.WriteLine(path);//八 Trim(); 删除前导/尾随空白字符string s1 = " aaaa ";s1 = s1.Trim();//s1.TrimStart();//只删除前导空白字符Console.WriteLine(s1);//九 string.IsNullOrEmpty(str); 判断字符串是否为空""或者是nullstring s2 = "";string s3 = null;bool b1 = string.IsNullOrEmpty(s2);bool b2 = string.IsNullOrEmpty(s3);Console.WriteLine(b1);Console.WriteLine(b2);//十 string.Join(); 串联对象数组的各个元素,其中在每个元素之间使用指定的分隔符。string[] names = { "张三", "李四", "王五", "赵六", "田七" };string Newnames = string.Join('|', names);//string Newnames1 = string.Join('|', "张三", "李四", "王五", "赵六", "田七");Console.WriteLine(Newnames);#endregionConsole.ReadKey();}}}
StringBuilder and String

#region 计算string速度//string str = null;////创建了一个计时器,用来记录程序运行的时间//Stopwatch sw1 = new Stopwatch();//sw1.Start();//开始计时//for (int i = 0; i < 100000; i++)//{// str += i;//}//sw1.Stop();//结束计时//Console.WriteLine(sw1.Elapsed);//获取当前实例测量得出的总运行时间// //00:00:08.5092280#endregion#region 计算StringBuilder速度////只开辟了一块空间//StringBuilder sb = new StringBuilder();////创建了一个计时器,用来记录程序运行的时间//Stopwatch sw2 = new Stopwatch();//sw2.Start();//开始计时//for (int i = 0; i < 100000; i++)//{// sb.Append(i);//}//sw2.Stop();//结束计时//Console.WriteLine(sw2.Elapsed);//获取当前实例测量得出的总运行时间// //00:00:00.0047001// //一般都会把StringBuilder -> string// //Console.WriteLine(sb.ToString());#endregion
