C#中String字符串的解析及String的各种方法

  • Post author:
  • Post category:其他




字符串

string 字符串是非常常用的数据类型,它是引用类型,但又非常特殊。



字符串的特殊引用

因为String字符串所定义的值可能很多很多,引用类型会在堆空间建立一个储存空间用来存放String字符串的值,非常占用空间。

所以如果定义了多个值一样的字符串,内存里的值只有一份,他们所应用的就只有一个值



字符串的更改

字符串是不能更改的,所谓更改是创建了一个新的字符串

如:

string a="abc";
a="abcd";

在这里插入图片描述

它会生成一个新的字符串,原来的值就会被C#的垃圾回收机制自动销毁


垃圾回收机制


如果一个对象放在堆里的东西没有人引用了,那么他就会自动销毁,这就是C#的垃圾回收机制。



字符串可以当做字符数组使用

string str = "abc";
Console.WriteLine(str[0]);//'a' 

但是只能读,不能改。

string str = “abc”;
str[2] =1; // ❌ ❌ ❌

这样是错误的。



字符串可以进行+、+=运算,但-、-=不行

string str = "abc";
str += "a"; 



String中的各种方法

在这里插入图片描述

在这里插入图片描述

以下是各个方法的使用方法

            //比较   相等0 不相等1或-1
            string str = "AbcDef";
            int n = string.Compare(str, "AbcDef");//返回一个int数字 传入的第一个参数为被比较的参数,第二个为要比较的参数。
            Console.WriteLine(n);

            //是否包含
            str = "abcde";
            bool b = str.Contains("bc");//返回一个bool值
            Console.WriteLine(b);

            //移除
            str = "abcde";
            str = str.Remove(3, 1);//不会改变旧的,但会生成一个新的,所有需要去接受一下。返回一个新的字符串 第一个参数为从第几位开始移除(从0开始计数),第二个参数为移除几位。
            Console.WriteLine(str);

            //合并
            str = string.Concat("abc", "def", "aaa");//相当于+号,只不过是官方写法
            Console.WriteLine(str);

            //赋值
            str = "abcde";
            char[] cs = new char[10];//拷贝的目标必须是一个数组
            str.CopyTo(1, cs, 0, 3);//拷贝的目标必须是一个数组  第一个参数为字符串中的第几位,第二个参数为目标字符数组,第三个参数为数组中的下标就是要存到数组中的第几位,第四个参数为要复制几位,
            Console.WriteLine(cs);

            //查找字符串返回第一次索引  从前往后
            str = "abcde";
            int a = str.IndexOf("bc");
            Console.WriteLine(a);

            //查找字符串返回最后一次索引  从后往前
            str = "abcdebc";
            n = str.LastIndexOf("bc");
            Console.WriteLine(n);

            //查找到任意字符串返回索引
            str = "abcde";
            a = str.IndexOfAny(new char[] { 'b', 'c' });//传入一个字符数组,然后输入要查询多个字符,字符之间的关系是或,就是查询到其中一个字符他就返回索引。
            Console.WriteLine(a);

            //插入
            str = "abcde";
            str = str.Insert(1, "110");//第一个参数为从第几位插入(从0开始计数),就是如果想要在a后插入110,那就从a开始计数,因为从0开始计数,所以0之后是1,第二个参数就是想要插入的值。
            Console.WriteLine(str);

            //合并字符串数组
            str = string.Join(",", new string[] { "abc", "bcd", "def" });//第一个参数为分隔符,就是这个方法允许所合并的字符串之间用分隔符分开,第二个参数为一个字符串数组,用来输入要合并的字符串。
            Console.WriteLine(str);

            //左侧填充空格
            str = "abcde";
            str = str.PadLeft(10);//传入的参数为在左边加几个空格。
            Console.WriteLine(str);
            //右侧填充空格
            str = "abcde";
            str = str.PadRight(10);//传入的参数为在右边边加几个空格。
            Console.WriteLine(str);

            //替换
            str = "abcde";
            str = str.Replace("bc", "00");//第一个参数为要替换的   第二个参数为替换成的
            Console.WriteLine(str);

            //拆分
            str = "abc,def,efg";
            string[] strs = str.Split(',');//以传入的字符拆分。返回一个数组,用来存放拆分开的字符串。
            Console.WriteLine(strs[1]);

            //截取子字符串
            str = "abcdef";
            str = str.Substring(1, 3);//第一个参数为从第几位开始   第二个参数为取多少位
            Console.WriteLine(str);

            //转换小写
            str = "AbCdEf";
            str = str.ToLower();
            Console.WriteLine(str);
            //转换小写
            str = "AbCdEf";
            str = str.ToUpper();
            Console.WriteLine(str);

            //删除首尾的空白
            str = "     abcdef     ";
            str = str.Trim();
            Console.WriteLine(str);



版权声明:本文为weixin_46351122原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。