【C#学习记录】三、字符串相关内容
2022/2/23 17:51:49
本文主要是介绍【C#学习记录】三、字符串相关内容,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
字符串
字符串的特性
- 字符串的不可变性
当给一个字符串重新赋值之后,老值并没有被销毁,而是指向了一个新开辟的空间,该空间存储新值。
当程序结束后,GC扫描整个内存,如果发现有的空间没有任何指向,则该空间被回收。
string s1 = "张三"; string s2 = "张三"; Console.ReadKey();
观察即时窗口:
上面是栈中的地址,下面是堆中的地址,可以发现,栈中地址不同,堆中地址相同
-
我们可以将字符串看作是char类型的一个只读数组,所以通过索引不能改变字符串的值
如果想改变字符串,首先需要利用ToCharString()方法将字符串转换为char类型的数组,改变完再转回去
string s = "abcdefg"; char[] chs = s.ToCharString(); chs[0] = 'b'; s = new string(chs);
StringBuilder类
为了简化字符串的使用,引入StringBuilder类
计时器
Stowatch类
Stopwatch sw = new Stopwatch(); sw.Start(); sw.Stop(); Console.WriteLine(sw.Elapsed);
StringBuilder sb new StringBuilder(); sb.Append(); string str = sb.ToString();
.Append()
string字符串常用方法
- 字符串长度str.Length()
str1.Length()
- 字符串大小写转换str.ToUpper() str.ToLower()
str1 = str1.ToUpper()
str2 = str2.ToLower()
- 字符串比较str1.Equals(str2)
==
str1.Equals(str2)(区分了大小写)
str1.Equals(str2, StringComparision.OrdinalIgnoreCase)(忽略了大小写差异)
-
分割字符串str.Split(chs,StringSplitOption.RemoveEmptyEntries)
string str = "a b dfd _ + = ,,, fdf "; //分割字符串Split char[] chs = {' ','_','+','=',','}; string[] str = s.Split(chs, StringSplitOption.RemoveEmptyEntries);
返回字符串类型的数组
-
替换字符串str.Replace(substr1,substr2)与字符串查询str.Contains(substr)
string str = "国家关键人物老赵"; if(str.Contains("老赵")) { str = str.Replace("老赵","**"); } Console.WriteLine(str);
str.Contains()方法和str.Replace()方法
-
截取字符串str.Substring(StartIndex)
string str = "今天天气好晴朗,处处好风光"; str = str.Substring(1);//从索引1截取到最后 Console.WriteLine(str);
从索引处截取到最后,包含这个索引。
string str = "今天天气好晴朗,处处好风光"; str = str.Substring(1,2);//从索引1截取到索引2 Console.WriteLine(str);
包括索引1
- 判断字符串从某个字符串起始str.StartWith("substr"),结束str.EndWith("substr")
string str = "今天天气好晴朗,处处好风光"; if (str.StartWith("今天"))//str.EndWith("风光"); { Console.WriteLine("是的"); } else { Console.WriteLine("不是的"); }
- 判断字符串中某一个字符的索引str.IndexOf('char',FindIndex)
string str = "今天天气好晴朗,处处好风光" int index = str.IndexOf('天',1); int index2 = str.LastIndexOf('天'); Console.WriteLine(index);
从索引1开始找,包括索引1
- 从字符串中一处所有的空格str.Trim()
string str =" hahaha " str = str.Trim();//去掉所有的空格 str1 = str.TrimStart();//去掉开始的空格 str2 = str.TrimEnd();//去掉结尾的空格 Console.WriteLine(str);
- 判断字符串是否为空string.IsNullOrEmpty(str)
string str = "";//null bool bl = string.IsNullOrEmpty(str);
- 使用指定分隔符凭借字符串数组string.Join(分隔符,str);
string[] str = {"张三","李四","王五"}; string strNew = string.Join("|",str); Console.WriteLine(strNew);
总结
关键词 | 作用 | 实例方法/静态方法 | 语法举例 |
---|---|---|---|
Length | 获得当前字符串中字符的个数 | 实例方法 | str.Length() |
ToUpper | 将字符转换成大写形式 | 实例方法 | str.ToUpper() |
ToLower | 将字符串转换成小写形式 | 实例方法 | str.ToLower() |
Equals | 比较两个字符串 | 实例方法 | str1.Equals(str2,stringComparison.OrdinalIgnoreCase) |
Split | 分割字符串,返回字符串类型的数组 | 实例方法 | str.Split(chs) |
SubString | 截取字符串,在截取的时候包含要截取的那个位置 | 实例方法 | str.SubString(Index) |
IndexOf | 判断某个字符串在字符串中第一次出现的位置,如果没有返回-1 | 实例方法 | str.IndexOf(subString,FindIndex) |
LastIndexOf | 判断某个字符串在字符中最后一次出现的位置,如果没有返回-1 | 实例方法 | str.LastIndexOf(subString) |
StartsWith | 判断以...开始 | 实例方法 | str.StartWith(subString) |
EndsWith | 判断以...结束 | 实例方法 | str.StartWith(subString) |
Replace | 将字符串中某个字符串替换成指定的字符串 | 实例方法 | str.Replace(subString) |
Contains | 判断某个字符串是否包含指定的字符串 | 实例方法 | str.Contains(subString) |
Trim | 去掉字符串中前后的空格 | 实例方法 | str.Trim() |
TrimEnd | 去掉字符串后面的空格 | 实例方法 | str.TrimEnd() |
TrimStart | 去掉字符串前面的空格 | 实例方法 | str.TrimStart() |
IsNullOrEmpty | 判断字符串是否为空或者null | 静态方法 | string.IsNullOrEmpty(str) |
Join | 以特定分隔符链接字符串数组 | 静态方法 | sring.Join(subString,str) |
字符串的处理 练习
有时间自己写一遍。
这篇关于【C#学习记录】三、字符串相关内容的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#