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变量。如:

dim str as string = "Hello World"

2、其他构造函数
如String(Char, Int32)构造函数可以将 String 类的新实例初始化为由重复指定次数的指定 Unicode 字符指示的值。

Dim str As String = New String("A"c, 10)

二、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)、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, "*") '用*号填充左部

效果如图:
在这里插入图片描述
(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字符

效果如图:
在这里插入图片描述
(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")

效果如图:
在这里插入图片描述
(6)、ToLower 和ToUpper
如:

        Dim str As String = "Hello World"
        Dim strToUpper As String = str.ToUpper '全部大写
        Dim strToLower As String = str.ToLower '全部小写

效果如图:
在这里插入图片描述
(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

效果如图:
在这里插入图片描述
5、从字符串中提取子字符串
(1)、Split(separator)
如:

        Dim str As String = "A,B,C,D"
        Dim strSplit() As String = str.Split(",")

参数: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)

效果如图:
在这里插入图片描述
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)

测试效果:
在这里插入图片描述
三、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

效果如图:
在这里插入图片描述
四、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

操作时间如图:
在这里插入图片描述
可以用.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

操作时间如图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zyjq52uys/article/details/86006864