System.String是一个专门用于存储字符串的类,并允许对字符串进行多种操作。 Visual Basic还允许使用类似于索
引器的语法来提取字符串中指定的字符:
Dim message As Srring = "Hello"
Dim chr As Char = message(4) ‘return "0"
String 类
https://docs.microsoft.com/zh-cn/dotnet/api/system.string?view=netcore-3.1
属性
Chars[Int32] | |
Length | 获取当前 String 对象中的字符数。 |
方法
Clone() | 返回对此 String实例的引用。 |
Compare(String, Int32, String, Int32, Int32) | 比较两个指定的 String 对象的子字符串,并返回一个指示二者在排序顺序中的相对位置的整数。 |
CompareOrdinal(String, Int32, String, Int32, Int32) | |
Concat(Object, Object) | 连接两个指定对象的字符串表示形式。 |
Concat(Object, Object, Object) | 连接三个指定对象的字符串表示形式。 |
Copy(String) | |
CopyTo(Int32, Char[], Int32, Int32) | 将指定数目的字符从此实例中的指定位置复制到 Unicode 字符数组中的指定位置。 |
Format(IFormatProvider, String, Object) | 将指定字符串中的一个或多个格式项替换为对应对象的字符串表示形式。 参数提供区域性特定的格式设置信息。 |
IndexOf(Char) | 报告指定 Unicode 字符在此字符串中的第一个匹配项的从零开始的索引。 |
IndexOfAny(Char[]) | 报告指定 Unicode 字符数组中的任意字符在此实例中第一个匹配项的从零开始的索引。 |
Insert(Int32, String) | 返回一个新的字符串,在此实例中的指定的索引位置插入指定的字符串。 |
Join(Char, Object[]) | 连接对象数组的字符串表示形式,其中在每个成员之间使用指定的分隔符。 |
LastIndexOf(Char) | 报告指定 Unicode 字符在此实例中的最后一个匹配项的从零开始的索引的位置。 |
LastIndexOfAny(Char[]) | 报告在 Unicode 数组中指定的一个或多个字符在此实例中的最后一个匹配项的从零开始的索引的位置。 |
PadLeft(Int32) | 返回一个新字符串,该字符串通过在此实例中的字符左侧填充空格来达到指定的总长度,从而实现右对齐。 |
PadRight(Int32) | 返回一个新字符串,该字符串通过在此字符串中的字符右侧填充空格来达到指定的总长度,从而使这些字符左对齐。 |
Remove(Int32) | 返回当前实例中从指定位置到最后位置的所有以删除的字符的新字符串。 |
Replace(Char, Char) | 返回一个新字符串,其中此实例中出现的所有指定 Unicode 字符都替换为另一个指定的 Unicode 字符。 |
Split(Char, Int32, StringSplitOptions) | 根据提供的字符分隔符将字符串拆分为最大数目的子字符串。 |
Substring(Int32) | 从此实例检索子字符串。 子字符串在指定的字符位置开始并一直到该字符串的末尾。 |
ToLower() | 返回此字符串转换为小写形式的副本。 |
ToUpper() | 返回此字符串转换为大写形式的副本。 |
Trim() | 从当前字符串删除所有前导空白字符和尾随空白字符。 |
String类有一个缺点,如果多次修改一个字符串,则String类的效率就会变得很低。因为它实际上是一个内容长度不可变的数据类型,一旦对字符串对象进行了初始化,该字符串对象就不能改变了。即使用修改字符串内容的方法和运算符,实际上也只是创建了一个新的字符串,并把旧字符串的内容复制到新字符串中。
如果在诸如文字处理一样需要多次修改字符串的程序中使用String类,则应用程序就会有严重的性能问题。为了解决这个问题,Microsoft提供了System.Text.StringBuilder类。StringBuilder不像Stnng那样支持非常多的方法,在StringBuilder上可以进行的处理仅限于替换和添加或删除字符串中的文本,它的工作效率非常。
StringBuilder类,通常分配的内存会比实际需要的更多,开发人员还可以显式地指定分配给StringBuilder内存。但如果没有显式指定分配给StringBuilder的内容空间,存储空间在默认情况下会根据StringBuilder初始化时的字符串长度来确定.
StringBuilder 类
https://docs.microsoft.com/zh-cn/dotnet/api/system.text.stringbuilder?view=netcore-3.1
属性
Capacity | 获取或设置可包含在当前实例所分配的内存中的最大字符数。 |
Chars[Int32] | 获取或设置此实例中指定字符位置处的字符。 |
Length | 获取或设置当前 StringBuilder 对象的长度。 |
MaxCapacity | 获取此实例的最大容量。 |
方法
Append(Boolean) | 向此实例追加指定的布尔值的字符串表示形式。 |
AppendFormat(IFormatProvider, String, Object) | 向此实例追加通过处理复合格式字符串(包含零个或更多格式项)而返回的字符串。 每个格式项都使用指定的格式提供程序替换为单个参数的字符串表示形式。 |
Insert(Int32, Boolean) | 将布尔值的字符串表示形式插入到此实例中的指定字符位置。 |
Remove(Int32, Int32) | 将指定范围的字符从此实例中移除。 |
Replace(Char, Char) | 将此实例中出现的所有指定字符替换为其他指定字符。 |
ToString() | 将此实例的值转换为 String。 |
StringBuilder类有两个主要的属性:
- Length:指定字符串的实际长度。
- Capacity:字符串占据存储单元的最大长度。
使用StringBuilder类表示字符串时,对字符串的修改完全在StringBuilder实例的存储单元中进行,这就大大提高了添加子字符串和替换单个字符的效率.不过删除或插入子字符串的效率仍然很低,因为这需要移动随后的字符串。只有执行扩展字符串容最的操作,才会给字符串分配需要的新内存,才可能移动整个字符串。