关键词搜索

源码搜索 ×
×

VB.NET学习笔记:数据类型——System.String类(字符串)

发布2021-02-11浏览1289次

详情内容

光标定位到想获取帮助的关键词后按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

      在这里插入图片描述

      相关技术文章

      点击QQ咨询
      开通会员
      返回顶部
      ×
      微信扫码支付
      微信扫码支付
      确定支付下载
      请使用微信描二维码支付
      ×

      提示信息

      ×

      选择支付方式

      • 微信支付
      • 支付宝付款
      确定支付下载