欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#面向对象-09字符串

程序员文章站 2022-03-22 08:22:17
字符串的不可变性当给字符串重新赋值后,在堆中的原字符串没有被销毁,而是在堆中新开辟块内存重新存储,原栈中对堆的引用指向新的地址。替换字符串某字符的方法字符串可看做char的只读数组,因此不能直接对该字符重新复制替换字符串中的某个字符可用如下方法//想把s的首字母换位bstring s="abcdefg";//s[0]='b',这样是不行的,因为s[0]是只读的//正确做法//首先将字符串转换为char类型数组char[] chs = s.ToCharArray();chs[0] = '...

字符串的不可变性

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

替换字符串某字符的方法

字符串可看做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