VB.NET 子字符串方法示例
什么是子串?
Substring 函数用于获取指定字符串的一部分。此方法定义在 String 类中。 Microsoft VB.Net您必须指定字符串的起始索引。tracted。字符串将是 extrac从该索引开始,一直到你指定的长度。
前trac要理解 Substring 方法所需的语法,对处理文本很有帮助。
子字符串的语法
该函数接受两个参数,如以下语法所示:
Public Function Substring(ByVal start_Index As Integer, ByVal sub_length As Integer) As String
在这里,
- ByVal 关键字表示按值传递,这是一种将参数传递给函数的机制。
- start_Index 是要从中获取子字符串的索引。
- sub_length 表示字符串从 start_Index 开始复制的长度范围。该长度以字符数衡量。该函数将返回 extracted 子字符串。
起始索引从零开始,因此字符串的第一个字符位于位置 0 而不是位置 1。
语法定义完毕后,以下示例展示了 Substring 方法在控制台应用程序中的实际应用。
例子
步骤 1)创建一个新的控制台应用程序。
步骤 2)向其中添加以下代码:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim subst As String = st.Substring(0, 4) Console.WriteLine("The substring is: {0}", subst) Console.ReadKey() End Sub End Module
步骤 3)点击工具栏中的“开始”按钮执行代码。您应该会看到以下结果:
我们使用了以下代码:
的解释 Code:
- 创建一个名为 Module1 的模块。
- 启动主要子程序。
- 定义一个名为 st 的字符串变量并赋值 Guru99 到它。
- 定义一个名为“subst”的字符串变量,作为字符串“st”从索引0开始、长度为4个字符的子字符串。
- 在控制台上打印一些文本和上述子字符串。
- 暂停控制台窗口一段时间,等待用户采取行动将其关闭。
- 主要子程序结束。
- 模块结束。
一个论点
如果我们只向函数传递一个参数会怎么样?该函数将复制从该索引开始的字符串中的所有数据。Substring 函数内部会复制该索引处的所有字符串数据以及该索引之后的数据。例如:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim subst As String = st.Substring(4) Console.WriteLine("The substring is: {0}", subst) Console.ReadKey() End Sub End Module
单击“开始”按钮运行代码。它应返回以下内容:
Substring 函数返回了 99。我们向该函数传递了参数 4,这意味着它将开始执行tract 是从字符串索引 4 处的字符到字符串末尾的子字符串。9 是字符串中索引 4 处的字符。 Guru99,因此是extrac变革就此开始。
除了从单个索引开始截取之外,Substring 方法还可以针对字符串中间的字符。
中间字符
我们也可以获取相关字符串的中间字符。在这种情况下,我们只需提供所需字符串的起始索引和长度。在以下示例中,我们从索引 2 获取指定字符串的子字符串,该字符串的长度为 2 个字符:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim subst As String = st.Substring(2, 2) Console.WriteLine("The substring is: {0}", subst) Console.ReadKey() End Sub End Module
点击工具栏上的“开始”按钮运行代码。您将获得以下结果:
在上面的例子中,Substring 函数返回了 ru。我们向该函数传递了参数 (2, 2)。第一个 2 指示函数开始执行。trac从索引 2 开始提取子字符串,而第二个 2 指示函数仅返回长度为 2 个字符的子字符串。这意味着 extrac子字符串的提取应从字符串索引为 2 的元素开始。 Guru99,即 r。由于返回的子字符串长度应仅为 2 个字符,因此 extraction 不会越过 'u',因此返回了 'ru'。
一个字符
我们可以使用 Substring 函数从字符串中获取单个字符。在这种情况下,您需要进行分配,但可以直接访问该字符。这样速度会快一点。以下示例演示了我们可以实现此目的的两种方法:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim mid1 As Char = st(1) Console.WriteLine(mid1) Dim mid2 As String = st.Substring(1, 1) Console.WriteLine(mid2) Console.ReadKey() End Sub End Module
点击“开始”按钮运行代码,你将得到以下结果:
我们使用了以下代码:
的解释 Code:
- 创建一个名为 Module1 的模块。
- 启动主要子程序。
- 定义一个名为 st 的字符串变量并赋值 Guru99 到它。
- 定义一个名为 mid1 的字符串变量,并获取字符串 st 中索引 1 处的字符。该字符将被分配给变量 mid1。
- 在控制台上打印上述字符。
- 定义一个名为 mid2 的字符串变量,并从字符串 st 中获取索引为 1 且长度为 1 的字符。长度为 1 表示它将返回起始索引处的相同字符。计数从您指定的起始索引开始。该字符将分配给变量 mid2。
- 在控制台上打印上述字符。
- 暂停控制台窗口一段时间,等待用户采取行动将其关闭。
- 主要子程序结束。
- 模块结束。
一旦你感到舒适,例如trac对于 ting 子字符串,了解如何处理该方法可能引发的错误是值得的。
常见的子字符串错误以及如何避免它们
Substring 方法对传入的值有严格的限制。当参数超出字符串的范围时,VB.Net 会抛出 ArgumentOutOfRangeException 异常,并在运行时终止程序。了解这些规则有助于避免这种常见的错误。
该方法在以下三种情况下会引发异常:
- start_Index 为负数。
- start_Index 大于字符串的长度。
- start_Index 和 sub_length 之和超出字符串末尾的点数。
一个常见的错误是直接使用 IndexOf 函数的结果而不先进行检查。当 IndexOf 找不到字符时,它会返回 -1,而将 -1 传递给 Substring 函数会触发异常。以下代码可以避免这种情况:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim pos As Integer = st.IndexOf("9") If pos >= 0 Then Dim subst As String = st.Substring(pos) Console.WriteLine(subst) Else Console.WriteLine("Character not found") End If Console.ReadKey() End Sub End Module
在调用之前验证索引可以确保应用程序流畅运行,即使输入字符串不包含您期望的字符。
获取字符之前或之后的子字符串
一项常见的任务是 extrac提取特定字符前后出现的文本,例如在 @ 符号处分割电子邮件地址。VB.Net 没有提供专门的函数来实现此功能,但您可以将 IndexOf 和 Substring 结合使用来实现。
字符前的文本: 调用 IndexOf 函数定位字符,然后将该索引作为长度传递给 Substring 函数:
Module Module1 Sub Main() Dim email As String = "guru99@example.com" Dim position As Integer = email.IndexOf("@") Dim namePart As String = email.Substring(0, position) Console.WriteLine(namePart) Console.ReadKey() End Sub End Module
代码会打印 guru99,即字符串中 @ 符号之前的部分。
字符后的文本: 将索引加 1,让子字符串函数运行到字符串末尾:
Dim domainPart As String = email.Substring(position + 1) Console.WriteLine(domainPart)
这将返回 example.com。当一个字符出现多次时,请使用 LastIndexOf 代替 IndexOf,以便从最后一次出现的位置开始,而不是从第一次出现的位置开始。
子串与左、右、中函数
Visual Basic 从早期版本继承了三个字符串函数:Left、Right 和 Mid。它们位于 Microsoft.VisualBasic 命名空间对于来自经典 VB 的开发人员来说会感觉更加熟悉。
- Left(string, n) 返回字符串的前 n 个字符。
- 右(字符串,n) 返回字符串的最后 n 个字符。
- 中间(字符串,起始位置,长度) 返回从起始位置开始的一部分,与 Substring 函数非常相似。
主要区别在于它们计数方式的不同。`Mid` 函数从 1 开始计数,因此第一个字符位于位置 1;而 `Substring` 方法从 0 开始计数。`Substring` 是标准的 .NET 方法,在所有 .NET 语言中行为都相同,因此是新代码的推荐选择。`Left`、`Right` 和 `Mid` 函数则用于维护旧的 Visual Basic 项目。






