Unity开发之C#基础-String类型与StringBuilder类型
前言
本篇,我们介绍编程语言中的一个比较重要的类型,String类型与StringBuilder。
制作不易还请各位一键三连哦!
文章目录
- 前言
- String类型简介
- String类型方法
- String Builder类型
-
- String类型的缺点
- 解决方式
- String Builder的优点
- String Builder字符连接操作
- 总结
String类型简介
String类型,又叫字符串类型,是编程语言中常见的引用类型之一,通常作用于对程序中的字符串的操作。它将一组字符视为一个整体进行处理,使用起来很像是一个字符数组。
上面我们说到,String类型是将一组字符视为一个整体进行处理,很像一个字符数组,那么我们前面讲解数组的时候,有提到数组中有Length属性可以知道数组的长度,还可以通过遍历的方式或者是索引(下标)的方式来查找数组中的单独的元素,那么我们现在可以尝试一下,字符串也就是字符数组,是否支持这些操作呢?
经过我们自己写出代码测试,发现这些操作都是可以的,测试结果如下:
需要我们注意的是,String类型中的索引长度是只读的,也就是不能修改的。
但实际上,字符串不单单只是作用于这些,字符串的妙用在于他为我们提供的许多方法,接下来我们就讲解一下一些常见的字符串方法
String类型方法
-
大小写字母转换
-
查找字符在当前字符串中的位置
-
字符串截取
-
字符串插入
-
字符串删除
-
字符替换
-
字符串比较
如果两个字符串长度相同,且各个对于位置上的 字符也都相同,那么认为字符串是相等的。
比较规则:
1. 如果s1和s2都为空字符串,那么返回整数0
2. 比较s1的第一个字符a1和s2的第一个字符a2,如果相等,则继续比较s1和s2的剩 余子串,否则返回a1和a2的比较结果
3. 如果s1和s2的所有字符都相等,那么返回整数0
如果只需要知道字符串之间的包含关系,那么可使用Contains方法来判断字符串中是 否包含指定子串,使用StartsWith方法和EndsWith方法来判断字符串是否以指定的 子串开始和结束
8. 删除字符串前后空格
9. 字符串分隔
上面就是对于String类型的简单介绍就是这些,具体还有其他的方法以及作用大家也可以自行查找,下面我们要介绍到的是String类型的优化版,StringBuilder类型
String Builder类型
为什么我们会说String Builder是String类型的优化版呢,这就要讲一下String类型的缺点了
String类型的缺点
String是.NET类库中比较特殊的一个引用类型,每一个String对象都是一个字符串常 量,而修改字符串的方法实际上都是返回一个新的String对象,原字符串仍然留在内存 中等待回收,那么当字符串较长或是操作频繁时就消耗大量的资源
解决方式
.NET类库的System.Text命名空间下专门定义了一个StringBuilder类,用于对字符串 进行动态的管理,而不是每次都生成新的字符串。 StringBuilder对象可以使用无参构造函数来创建,也可以基于一个现有字符串来创建
StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder("abc");
String Builder的优点
StringBuilder与String类的用法有很多类似之处,如通过Length属性获取字符串长 度,通过索引函数访问字符,但StringBuilder的索引函数是可读写的,StringBuilder 也提供了Insert、Remove、Replace这些操作字符串的方法;尽管它们的返回类型为 StringBuilder,但方法并没有创建新的对象,返回的仍是当前对象。 此外,StringBuilder的ToString方法直接返回所包含的字符串内容。
String Builder字符连接操作
为了方便频繁的字符连接操作,StringBuilder提供了Append、AppendLine和 AppendFormat这3个方法。
Append方法用于将一个新串加到字符串的尾端,参数可以是字符串,可以是基本值类型。
AppendLine方法会在追加新串后再增加一个换行符。
AppendFormat方法在追加新串的同时进行参数格式化。
StringBuilder sb1 = new StringBuilder(); sb1.Append("公元"); sb1.AppendFormat("{0}年{1}月{2}日", 2020, 1, 1); Console.WriteLine(sb1.AppendLine()); //公元2020年1月1日
总结
以上就是我们今天的介绍,下期我们将会讲解到面向对象的基础概念。大家再见啦。