C#学习笔记——字符串和StringBuilder

字符串操作

1、常用方法

(1)ToUpper()

作用:将字符转换成大写形式,仅对字母有效。返回值是转换后的字符串。

例如:name.ToUpper();

(2)ToLower()

作用:将字符转换成小写形式,仅对字母有效。返回值是转换后的字符串。

例如:name.ToUpper();

(3)Equals()

作用:比较两个字符串是否相同。相同返回true,不相同返回false。

例如:name.Equals(name2);

(4)Split()

作用:分割字符串。返回字符串类型的数组。

例如:name3.Split(m_char);//注意参数是字符数组!!!

(5)Substring

作用:截取字符串。返回截取后的子串。

使用:字符串变量.方法名(开始截取的位置);

字符串变量.方法名(开始截取的位置,截取多长);

例如:name.Substring(2); //从角标为 2 的位置,截取到最后;

name.Substring(2,2); //从角标为 2 的位置,截取 2 个字符;

(6)IndexOf()

作用:查找某个字符串在字符串中第一次出现的位置。

返回所在的索引位置值。如果没有找到,返回-1。

例如:name.IndexOf(“on”);

(7)LastIndexOf()

作用:查找某个字符串在字符串中最后一次出现的位置。

返回所在的索引位置值。如果没有找到,返回-1。

例如:name.IndexOf(“on”);

(8)StartsWith()

作用:判断是否以...字符串开始。如果是,返回true;如果不是,返回false。

演示:name.StartsWith(“Mo”);

(9)EndsWith()

作用:判断是否以...字符串结束。如果是,返回true;如果不是,返回false。

演示:name.EndsWith(“key”);

(10)Replace()

作用:将字符串中的某个字符串替换成一个新的字符串。返回新的字符串。

使用:字符串变量.方法名(旧字符串,新字符串);

演示:name.Replace(“Mon”, “CODE”);

(11)Contains()

作用:判断某个字符串中是否包含指定的字符串。如果包含返回true,否则返回false。
 
使用:字符串变量.方法名(子字符串);
 
例如:name.Contains(“key”);
 
 
举个栗子:
 
            string name = "Monkey";
            Console.WriteLine("ToUpper:" + name.ToUpper());
            Console.WriteLine("ToLower:" + name.ToLower());

            string name_2 = "lkk";
            Console.WriteLine("Equals:" + name.Equals(name_2));


            string address = "中国|北京|海淀|上海";
            char[] c = new char[] { '|' };
            string[] ad = address.Split(c);
            for (int i = 0; i < ad.Length; i++)
            {
                Console.WriteLine(ad[i]);
            }


            Console.WriteLine("Substring:" + name.Substring(2));
            Console.WriteLine("Substring:" + name.Substring(2, 2));

            Console.WriteLine("IndexOf:" + name.IndexOf("k"));
            Console.WriteLine("LastIndexOf:" + name_2.LastIndexOf("k"));

            Console.WriteLine("StartsWith:" + name.StartsWith("Mon"));
            Console.WriteLine("EndsWith:" + name.EndsWith("key"));

            Console.WriteLine("Replace:" + name.Replace("Mon", "lkk"));

            Console.WriteLine("Contains:" + name.Contains("Mon"));

            Console.ReadKey();

运行截图:

C#学习笔记——字符串和StringBuilder_第1张图片

 (12)Trim()

作用:去掉字符串中前后空格。返回处理后的字符串。类似于python的strip()
 
使用:字符串变量.方法名();
 
例如:address.Trim();
 
拓展:TrimStart()和TrimEnd()同方法字面意思

 

(13)IsNullOrEmpty()
 
作用:判断一个字符串是否为 Null 或者空。 如果为 null 或者空,返回true; 否则返回false。
 
注意:null 是不占内存空间的,而空字符串(“”)是占内存空间的。
 
使用:string.方法名(字符串变量);
 
例如:string.IsNullOrEmpty(name);
 
 
 
举个栗子:
 
            string webName = "      B站     ";
            Console.WriteLine("**" + webName + "**");
            Console.WriteLine("**" + webName.Trim() + "**");

            Console.WriteLine("**" + webName.TrimEnd() + "**");
            Console.WriteLine("**" + webName.TrimStart() + "**");

            string n = "";
            Console.WriteLine(string.IsNullOrEmpty(n));

结果:C#学习笔记——字符串和StringBuilder_第2张图片

 
 
 
 

字符串的特点

1、字符串是引用类型

字符串的数据存储在堆,在栈中存储了数据的引用地址。

2、字符串是不可变的

给一个字符串重新赋值,旧值并没有销毁,而是重新开辟一片空间来存储新值。旧值等待系统回收。

通俗一点的理解(网友要逗死我)就是:你老婆这个人还在世界上,但是你换了个老婆!

放个图理解一哈子

C#学习笔记——字符串和StringBuilder_第3张图片

3、字符串可以看成字符数组

通过下标即可访问对应位置的数组

也可以使用for循环遍历数组

 

 

StringBuilder类

为了解决字符串变量重复赋值会在内存中产生大量的垃圾数据信息,降低效率的问题。经过测试StringBuilder比String的追加效率高百倍左右!

出现了一个新的类叫StringBuilder:

StringBuilder 类型的“字符串变量”,一直操作同一块内存空间,不会产生 垃圾数据,且执行效率远远高于 string 类型的字符串变量。
 

1、创建StringBuilder类型的字符串变量

StringBuilder sb = new StringBuilder();

2、Append()方法追加数据

            sb.Append("shengdai");
            sb.Append(123456);
            sb.Append(true);

            Console.WriteLine(sb.ToString());//shengdai123456True

3、clear()清空

sb.Clear()

 

 

 

 

 

 

 

 

 

 

 
 

你可能感兴趣的:(C#)