-
VB.NET学习笔记:数据类型——System.String类(字符串)
光标定位到想获取帮助的关键词后按F1获取帮助,你会了吗?如图所示:
从帮助页面里可以看到,在.NET Framework中字符串对应的类型是System.String类。
点击进入System.String类的帮助页面。
字符串(System.String类)是 Unicode 字符的有序集合,用于表示文本,即一系列 Unicode 字符。是基本类型中唯一的引用类型。
System.String类不同于旧的VB6.0,System.String类使用方法而不是函数来处理字符串。当然,为了兼容老版本的VB6.0,还是可以用函数来处理字符串的,不过这些函数并不包含在System.String类,而是Microsoft.VisualBasic.Strings 类中。据说C#是不使用Microsoft.VisualBasic.Strings类的,所以为了兼容其他编程语言,建议尽量使用System.String类处理字符串。
一、构造函数——实例化字符串对象
System.String类有多个不同的构造函数,能够实现给字符串简单赋值以外的功能。如图:
1、默认构造函数
String()是默认的构造函数,但String类并没有显式的提供这个构造函数。创建字符串实例最常用的方法是直接将一个字符串赋给String变量。如:
- 1
2、其他构造函数 如String(Char, Int32)构造函数可以将 String 类的新实例初始化为由重复指定次数的指定 Unicode 字符指示的值。
- 1
二、String方法 String类提供用于比较字符串,测试字符串是否相等,查找字符或字符串,修改字符串,提取字符串的组合字符串,格式化值等方法。 1、比较字符串 您可以通过使用以下String方法比较字符串来确定二者在排序顺序中的相对位置: Compare 返回一个整数,指示一个字符串在排序顺序中第二个字符串的关系。 CompareOrdinal 返回一个整数,指示一个根据其码位比较的第二个字符串的字符串的关系。 CompareTo 返回一个整数,指示当前的字符串实例与第二个字符串在排序顺序中的关系。 CompareTo(String)方法提供IComparable并IComparable实现String类。 复制粘贴帮助内容,做记号,没亲测。 2、测试字符串相等 在调用Equals方法来确定两个字符串是否相等。 实例Equals(String, String, StringComparison)和静态Equals(String, StringComparison)重载允许您指定比较是否区分区域性的或序号,以及是否考虑或忽略大小写。 为确定相等性的大多数测试是序号,并确定为系统资源 (如文件系统对象) 的访问权限为确定相等性比较应始终为序号。 3、查找字符串中的字符 String类包括两种类型的搜索方法: 返回的方法Boolean值,以指示特定的子字符串中是否存在字符串实例。 其中包括Contains, EndsWith,和StartsWith方法。 指示子字符串的字符串实例中的起始位置的方法。 其中包括IndexOf, IndexOfAny, LastIndexOf,和LastIndexOfAny方法。 4、修改字符串 (1)、Insert 将字符串插入到当前String实例。 Insert (int startIndex, string value) 参数:startIndex:Int32,插入的从零开始的索引位置;value:String,要插入的字符串。 返回:String,与此实例等效的一个新字符串,但在该字符串的 startIndex 位置处插入了 value。 如:
- 1
- 2
(2)、PadLeft 返回一个指定长度的新字符串,其中在当前字符串的开头填充空格或指定的 Unicode 字符。 PadLeft(Int32) 返回一个新字符串,该字符串通过在此实例中的字符左侧填充空格来达到指定的总长度,从而实现右对齐。 PadLeft(Int32, Char) 返回一个新字符串,该字符串通过在此实例中的字符左侧填充指定的 Unicode 字符来达到指定的总长度,从而使这些字符右对齐。 如:
- 1
- 2
- 3
效果如图: (3)、PadRight 返回一个指定长度的新字符串,其中在当前字符串的结尾填充空格或指定的 Unicode 字符。 与PadLeft用法相似。 (4)、Remove 返回一个新字符串,它相当于从当前字符串删除了指定数量的字符。 Remove(startIndex) 删除此字符串中从指定位置到最后位置的所有字符。 参数:startIndex——System .Int32 ,开始删除字符的从零开始的位置。 返回值:System .String ——一个新字符串,除所删除的字符之外,该字符串与此字符串等效。 Remove(startIndex, count) 从此实例中的指定位置开始删除指定数目的字符。 参数:startIndex—— System .Int32 ,开始删除字符的从零开始的位置;count—— System .Int32 ,要删除的字符数。 返回值:System .String ,一个新字符串,除所删除的字符之外,该字符串与此实例等效。 如:
- 1
- 2
- 3
效果如图: (5)、Replace 返回一个新字符串,其中当前字符串中出现的所有指定 Unicode 字符或 String 都替换为另一个指定的 Unicode 字符或 String。 Replace(oldChar, newChar) 参数:oldChar—— System .Char ,要被替换的 Unicode 字符;newChar——System .Char ,要替换出现的所有 oldChar 的 Unicode 字符。 返回值:System .String ——与此实例等效的一个字符串,但其中 oldChar 的所有实例都替换为 newChar。 Replace(oldValue, newValue) 参数:oldValue——System .String,要被替换的字符串;newValue——System .String,要替换出现的所有 oldValue 的字符串。 返回值:System .String,与当前字符串等效的一个字符串,但其中 oldValue 的所有实例都替换为 newValue。 如:
- 1
- 2
- 3
效果如图: (6)、ToLower 和ToUpper 如:
- 1
- 2
- 3
效果如图: (7)、Trim 、TrimEnd和TrimStart Trim 开始位置和字符串的末尾移除所有空白字符。 TrimEnd 删除字符串的末尾出现的所有字符。 TrimStart 从字符串的开头移除所有空白字符。 如:
- 1
- 2
- 3
- 4
效果如图: 5、从字符串中提取子字符串 (1)、Split(separator) 如:
- 1
- 2
参数:separator—— System .Char (),分隔此实例中子字符串的 Unicode 字符数组、不包含分隔符的空数组或 Nothing。 返回: System .String (),一个数组,其元素包含此实例中的子字符串,这些子字符串由 separator 中的一个或多个字符分隔。 (2)、SubString Substring(startIndex) 参数:startIndex——System .Int32 ,此实例中子字符串的起始字符位置(从零开始)。 返回值:System .String ,与此实例中在 startIndex 处开头的子字符串等效的一个字符串;如果 startIndex 等于此实例的长度,则为 Empty。 Substring(startIndex, length) 参数:startIndex—— System .Int32 ,此实例中子字符串的起始字符位置(从零开始);length——System .Int32 ,子字符串中的字符数。 返回值:System .String ,与此实例中在 startIndex 处开头、长度为 length 的子字符串等效的一个字符串,如果 startIndex 等于此实例的长度且 length 为零,则为 Empty。 如:
- 1
- 2
- 3
效果如图: 6、串联字符串 (1)、使用运算符& 前面一直在用这个运算符,不再多说。 (2)、Join 方法 String .Join (separator,value) 参数:separator—— System .String,要用作分隔符的字符串;value——System .String (),一个数组,其中包含要连接的元素。 返回值:System .String,一个由 value 中的元素组成的字符串,这些元素以 separator 字符串分隔。 如:
- 1
- 2
- 3
测试效果: 三、String .Length 属性 属性值:System .Int32 ,当前字符串中字符的数量。 如:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
效果如图: 四、String类不可变和 StringBuilder 类 String类被定义为不可变的类,若对字符串进行改变或复制时,系统将分配新的内存空间来存储(原空间被回收机制回收),操作时间长。 如:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
操作时间如图: 可以用.net库中的System.Text.StringBuilder类,它先分配一个较小的内存,当无法容纳时,再扩大这个内存,操作时间短。 如:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
操作时间如图: