image.png
image.png
s1,s2同一个地址。

字符串

(1)字符串的不可变性
(2)我们可以将字符串看作是char类型的一个只读数组
image.png
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():将数组按照指定的字符串连接,返回一个字符串。
image.png
(5)Split():字符串的分割,返回字符串类型的数组

image.png

image.png

  1. using System;
  2. using System.Diagnostics;
  3. using System.Text;
  4. namespace _057_面对对象继承_04_字符串的方法
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. //string s1 = "张三";
  11. //string s2 = "张三";
  12. #region 将字符串看作是char类型的一个只读数组
  13. ////可以将字符串看作是char类型的一个只读数组
  14. //string s = "abcdefghijklmnopqrstuvwxyz";
  15. ////s[0] = 'b'; 报错,因为是只读的。
  16. ////如果要改变字符串中某一元素个体,首先将字符串转换为char类型的数组
  17. //char[] chs = s.ToCharArray();
  18. //chs[0] = 'b';
  19. ////将字符串数组转为字符串
  20. //s = new string(chs);
  21. ////看作char类型的只读数组,所以我们可以通过下标去访问字符串中的某一个元素
  22. //Console.WriteLine(s[0]);
  23. #endregion
  24. #region 字符串方法
  25. // 一 Length 字符串长度
  26. //Console.WriteLine("请输入一个字符串:");
  27. //string ssss = Console.ReadLine();
  28. //Console.WriteLine("这个字符串的长度为:{0}", ssss.Length);
  29. //二 比较字符串(无视大小写)
  30. Console.WriteLine("请输入一个字符串:");
  31. string lessonOne = Console.ReadLine();
  32. //将字符串转换为大写
  33. //lessonOne = lessonOne.ToUpper();
  34. Console.WriteLine("请输入另一个字符串:");
  35. string lessonTwo = Console.ReadLine();
  36. //lessonTwo = lessonTwo.ToUpper();
  37. //lessonTwo.ToLower();//转换为小写
  38. //if (lessonOne==lessonTwo)
  39. //Equals 用来比较两个字符串 if (lessonOne.Equals(lessonTwo,枚举类型))
  40. if (lessonOne.Equals(lessonTwo, StringComparison.OrdinalIgnoreCase))//忽略大小写
  41. {
  42. Console.WriteLine("两个字符串相同~");
  43. }
  44. else
  45. {
  46. Console.WriteLine("两个字符串不同!");
  47. }
  48. //三 分割字符串Split //返回值类型为 数组
  49. //StringSplitOptions.RemoveEmptyEntries 将返回的null消除
  50. string sp = "I 2 _ ,,,lov e y+o=u ";
  51. char[] ch = { ' ', '2', '_', '+', '=', ',' };
  52. string[] str = sp.Split(ch,StringSplitOptions.RemoveEmptyEntries);
  53. for (int i = 0; i < str.Length; i++)
  54. {
  55. Console.Write(str[i]);
  56. }
  57. Console.WriteLine();
  58. //Split练习 2021-09-04 --> 2021年09月04日
  59. string date = "2021-9-4";
  60. string[] Date = date.Split('-', StringSplitOptions.RemoveEmptyEntries);
  61. Console.WriteLine("{0}年{1}月{2}日", Date[0], Date[1], Date[2]);
  62. //Date[0] += '年';
  63. //Date[1] += '月';
  64. //Date[2] += '日';
  65. //for (int i = 0; i < Date.Length; i++)
  66. //{
  67. // Console.Write(Date[i]);
  68. //}
  69. //Console.WriteLine();
  70. //四 判断字符串是否还有子串value,bool Contains(string value);
  71. //字符串替换 string Replace(string oldValue, string newValue);
  72. string name = "韦晓龙";
  73. if (name.Contains("龙"))//字符串是否还有子串value
  74. {
  75. name = name.Replace("龙", "*");//字符串替换
  76. }
  77. Console.WriteLine(name);
  78. //五 截取字符串 string Substring(int);
  79. string Mood = "今天天气好啊,爷心情好哇";
  80. //Mood = Mood.Substring(7);//截取字符串至末尾
  81. Mood = Mood.Substring(7,3); //截取字符串,限定长度
  82. Console.WriteLine(Mood);
  83. //六 判断字符串是否以子串value开始/结束 bool StartWith/EndWith(string value);
  84. string Weather = "今天是一个风雨交加的暴风雪天";
  85. if (Weather.StartsWith("今天"))
  86. {
  87. Console.WriteLine("Yes");
  88. }
  89. else
  90. {
  91. Console.WriteLine("No");
  92. }
  93. //七 取子串value第一次出现的位置 int IndexOf(string value);
  94. // 取子串value最后一次出现的位置int LastIndexOf(string value);
  95. string words = "qwertyuiopasdfghjklzxcvbnmdhawyubfawdnuiasjfbjbcxksd";
  96. int Index1 = words.IndexOf('d');
  97. int Index2 = words.LastIndexOf('d');
  98. Console.WriteLine(Index1);
  99. Console.WriteLine(Index2);
  100. //LastIndexOf Substring
  101. string path = @"c:\d\s\a\dw\r\we\t\rg\铃原爱蜜莉.avi";
  102. int index = path.LastIndexOf("\\");
  103. path = path.Substring(index+1);
  104. Console.WriteLine(path);
  105. //八 Trim(); 删除前导/尾随空白字符
  106. string s1 = " aaaa ";
  107. s1 = s1.Trim();
  108. //s1.TrimStart();//只删除前导空白字符
  109. Console.WriteLine(s1);
  110. //九 string.IsNullOrEmpty(str); 判断字符串是否为空""或者是null
  111. string s2 = "";
  112. string s3 = null;
  113. bool b1 = string.IsNullOrEmpty(s2);
  114. bool b2 = string.IsNullOrEmpty(s3);
  115. Console.WriteLine(b1);
  116. Console.WriteLine(b2);
  117. //十 string.Join(); 串联对象数组的各个元素,其中在每个元素之间使用指定的分隔符。
  118. string[] names = { "张三", "李四", "王五", "赵六", "田七" };
  119. string Newnames = string.Join('|', names);
  120. //string Newnames1 = string.Join('|', "张三", "李四", "王五", "赵六", "田七");
  121. Console.WriteLine(Newnames);
  122. #endregion
  123. Console.ReadKey();
  124. }
  125. }
  126. }

StringBuilder and String
image.png
image.png

  1. #region 计算string速度
  2. //string str = null;
  3. ////创建了一个计时器,用来记录程序运行的时间
  4. //Stopwatch sw1 = new Stopwatch();
  5. //sw1.Start();//开始计时
  6. //for (int i = 0; i < 100000; i++)
  7. //{
  8. // str += i;
  9. //}
  10. //sw1.Stop();//结束计时
  11. //Console.WriteLine(sw1.Elapsed);//获取当前实例测量得出的总运行时间
  12. // //00:00:08.5092280
  13. #endregion
  14. #region 计算StringBuilder速度
  15. ////只开辟了一块空间
  16. //StringBuilder sb = new StringBuilder();
  17. ////创建了一个计时器,用来记录程序运行的时间
  18. //Stopwatch sw2 = new Stopwatch();
  19. //sw2.Start();//开始计时
  20. //for (int i = 0; i < 100000; i++)
  21. //{
  22. // sb.Append(i);
  23. //}
  24. //sw2.Stop();//结束计时
  25. //Console.WriteLine(sw2.Elapsed);//获取当前实例测量得出的总运行时间
  26. // //00:00:00.0047001
  27. // //一般都会把StringBuilder -> string
  28. // //Console.WriteLine(sb.ToString());
  29. #endregion