字符串的不可变性

当给字符串重新赋值后,在堆中的原字符串没有被销毁,而是在堆中新开辟块内存重新存储,原栈中对堆的引用指向新的地址。

替换字符串某字符的方法

字符串可看做char的只读数组,因此不能直接对该字符重新复制
替换字符串中的某个字符可用如下方法

//想把s的首字母换位b
string s="abcdefg";
//s[0]='b',这样是不行的,因为s[0]是只读的
//正确做法
//首先将字符串转换为char类型数组
char[] chs = s.ToCharArray();
chs[0] = 'b';
//将字符串数组转换为字符串
s = new string(chs);

当对字符串进行大量拼接处理操作时的正确方法

直观的方法,比较耗时间,如下

string str = null;
//创建一个计时器,记录运行时间
Stopwatch sw = new Stopwatch();
sw.Start();//开始计时
for(int i=0;i<100000;i++)
{
	str += i;
}
sw.Stop();//计时结束
Console.WriteLine(sw.Elapsed);//获取当前对象测量得出的总时间

这种方法由于字符串的不可变性,每一次对字符串的修改都需要在内存中重新的开辟空间,因此很费时间。

正确的做法,采用StringBuilder类

string str = null;
StringBuilder sb = new StringBuilder();
//创建一个计时器,记录运行时间
Stopwatch sw = new Stopwatch();
sw.Start();//开始计时
for(int i=0;i<100000;i++)
{
	sb.Append(i);
}
sw.Stop();//计时结束
s = sb.ToString(); //一切类型都可以调用ToString()方法转换为字符串。
Console.WriteLine(sw.Elapsed);//获取当前对象测量得出的总时间

字符串常用属性和方法

  1. 字符串长度
    str.Length
  2. 转换大小写
    str = str.ToUpper()
    str = str.ToLower()
  3. 字符串比较方法 Equals()
str1.Equals(str2);//比较两个字符串是否相同
str1.Equals(str2,StringComparison.OrdinalIgnoreCase);//忽略大小写比较,StringComparison是一个枚举类型
  1. 分割字符串 Split()
    分割字符串,并返回字符串数组
string s = "a b +++ c = d ,efg";
char[] chs = [' ','+','=',','];//以这些字符为分割标准,即去掉这些字符
string[] str = s.Split(chs);//去掉的这些字符以空字符串""代替
string[] str = s.Split(chs,StringSplitOptions.RemoveEmptyEntries);//不把去掉的字符用空字符串代替
  1. Replace()和Contains()
//判断字符串是否包含和替换某字符串
string str = "我是咸鱼";
if(str.Contains("咸鱼"))
{
	str = str.Replace("咸鱼","小明");
}
  1. IndexOf() LastIndexOf()
    分别顺序和倒序查找某字符第一次出现的下标,第二个参数可以传从第几个下标开始找
  2. Substring()
    从传入的下标截取字符串
string path = @"C:\a\v\s\a\视频.mp4";//@的作用是取消字符串中反斜杠的转义作用
            int index = path.LastIndexOf("\\");// \\表示\
            path = path.Substring(index + 1);

            Console.WriteLine(path);
  1. 去空格
    Trim()首尾都去
    TrimStart()去首端
    TrimEnd() 去末尾
  2. 判断str是否为Null或空
    string.IsNullOrEmpty(str)
    10.string.join()
    将字符串数组中各元素以某种分隔符相连返回一个字符串
string[] strs = { "张三", "李斯", "王五", "赵六" };
            string str = string.Join("|", strs);
            Console.WriteLine(str);//张三|李斯|王五|赵六

11.StartsWith() EndsWith();
判断字符串是否以某字符串开始或结尾

本文地址:https://blog.csdn.net/weixin_43272648/article/details/107272454