光标定位到想获取帮助的关键词后按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类的,所以为vb.net教程了兼容其他编程语言,建议尽量使用System.String类处理字符串。
一、构造函数——实例化字符串对象
System.String类有多个不同的构造函数,能够实现给字符串简单赋值以外的功能。如图:
构造函数
1、默认构造函数
String()是默认的构造函数,但String类并没有显式的提供这个构造函数。创建字符串实例最常用的方法是直接将一个字符串赋给String变量。如:
dim str as string = "Hello World"
1
2、其他构造函数
如String(Char, Int32)构造函数可以将 String 类的新实例初始化为由重复指定次数的指定 Unicode 字符指示的值。
Dim str As String = New String("A"c, 10)
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。
如:
Dim str As String = "Hello World"
Dim strInsert As String = str.Insert(5, " Hi")
- 2
(2)、PadLeft
返回一个指定长度的新字符串,其中在当前字符串的开头填充空格或指定的 Unicode 字符。
PadLeft(Int32) 返回一个新字符串,该字符串通过在此实例中的字符左侧填充空格来达到指定的总长度,从而实现右对齐。
PadLeft(Int32, Char) 返回一个新字符串,该字符串通过在此实例中的字符左侧填充指定的 Unicode 字符来达到指定的总长度,从而使这些字符右对齐。
如:
Dim str As String = "Hello World"
Dim strPadLeft1 As String = str.PadLeft(20) '用空格填充左部
Dim strPadLeft2 As String = str.PadLeft(20, "*") '用*号填充左部
- 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 ,一个新字符串,除所删除的字符之外,该字符串与此实例等效。
如:
Dim str As String = "Hello World"
Dim strRemove1 As String = str.Remove(6) '删除第7至末字符
Dim strRemove2 As String = str.Remove(0, 6) '删除第1-7字符
- 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。
如:
Dim str As String = "Hello World"
Dim strReplace1 As String = str.Replace(" "c, ","c)
Dim strReplace2 As String = str.Replace("Hello", "World")
- 2
- 3
效果如图:
(6)、ToLower 和ToUpper
如:
Dim str As String = "Hello World"
Dim strToUpper As String = str.ToUpper '全部大写
Dim strToLower As String = str.ToLower '全部小写
- 2
- 3
效果如图:
(7)、Trim 、TrimEnd和TrimStart
Trim 开始位置和字符串的末尾移除所有空白字符。
TrimEnd 删除字符串的末尾出现的所有字符。
TrimStart 从字符串的开头移除所有空白字符。
如:
Dim str As String = " Hello World "
Dim strTrim As String = str.Trim
Dim strTrimEnd As String = str.TrimEnd
Dim strTrimStart As String = str.TrimStart
- 2
- 3
- 4
效果如图:
5、从字符串中提取子字符串
(1)、Split(separator)
如:
Dim str As String = "A,B,C,D"
Dim strSplit() As String = str.Split(",")
- 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。
如:
Dim str As String = "Hello World"
Dim strSubstring1 As String = str.Substring(4)
Dim strSubstring2 As String = str.Substring(0, 4)
- 2
- 3
效果如图:
6、串联字符串
(1)、使用运算符&
前面一直在用这个运算符,不再多说。
(2)、Join 方法
String .Join (separator,value)
参数:separator—— System .String,要用作分隔符的字符串;value——System .String (),一个数组,其中包含要连接的元素。
返回值:System .String,一个由 value 中的元素组成的字符串,这些元素以 separator 字符串分隔。
如:
Dim str() As String = {"a", "b", "c"}
Dim a As String = String.Join(",", str)
Console.WriteLine(a)
- 2
- 3
测试效果:
三、String .Length 属性
属性值:System .Int32 ,当前字符串中字符的数量。
如:
Module Module1
Sub Main()
Dim str As String = "Hello World"
Dim int As Integer = str.Length
MessageBox.Show(int.ToString)
End Sub
End Module
- 2
- 3
- 4
- 5
- 6
- 7
效果如图:
四、String类不可变和 StringBuilder 类
String类被定义为不可变的类,若对字符串进行改变或复制时,系统将分配新的内存空间来存储(原空间被回收机制回收),操作时间长。
如:
Module Module1
Sub Main()
Dim strA As String = "Hello World"
Dim strB As String = ""
Dim start As Date = Now()
For i As Integer = 1 To 10000
strB &= strA
Next
MessageBox.Show(Now().Subtract(start).TotalMilliseconds.ToString)
End Sub
End Module
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
操作时间如图:
可以用.net库中的System.Text.StringBuilder类,它先分配一个较小的内存,当无法容纳时,再扩大这个内存,操作时间短。
如:
Module Module1
Sub Main()
Dim sb As New System.Text.StringBuilder("Hello World")
Dim start As Date = Now()
For i As Integer = 1 To 10000
sb.Append("Hello World")
Next
MessageBox.Show(Now().Subtract(start).TotalMilliseconds.ToString)
End Sub
End Module
操作时间如图:
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12