VB2010从数组字符串中提取特定字符

时间:2012-10-19 17:21:55

标签: arrays vb.net character extract point

有没有办法指定我想从数组字符串中提取哪些字符? 这不是,下面的代码,论坛只是不喜欢它作为文本。

For example:  abc1234blahblah  and I want to point from the left, characters [4-7] 
Character 4 = "1"
Character 5 = "2"
Character 6 = "3"
Character 7 = "4"

然后我想把它们放进一个字符串:“1234”

真正的应用程序我正在研究,文件路径的第一个目录始终以项目编号开头,所以我想提取作业号并将其放入VB 2010的文本框中。 示例:Q:\ 2456_customer_name .... \ file.xls 我希望能够再次指向数字,但如果我知道主目录将始终以作业号开头,那么我应该能够指向字符[4-7]并将其放在一个字符串中。我想我知道这个概念,但是不太了解VB就可以把它放在一起了。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用Substring function

Dim a = "abc1234blahblah"
Dim b = a.Substring(3, 4) ' b now contains "1234"

考虑更多,文件所在的驱动器是否可能是\\MyServer\SomeShare\9876_CustomerName\file.xls之类的UNC路径?如果是这样,提取数字会有点棘手。我试图说明指定文件的所有可能方法:

Module Module1

    Function GetCustomerNumber(filename As String) As String
        Dim abspath = IO.Path.GetFullPath(filename)
        Dim dir = IO.Path.GetDirectoryName(abspath)
        Dim fileParentDirectory = dir.Split(IO.Path.DirectorySeparatorChar).Last
        Return fileParentDirectory.Substring(0, 4)
    End Function

    Sub Main()

        Dim a = "C:\5678_CustomerName\file.xls"
        Dim b = "\\se1234\Share001\5678_CustomerName\file.xls"
        Dim c = "\5678_CustomerName\file.xls"
        Dim d = ".\5678_CustomerName\file.xls"
        Dim e = "5678_CustomerName\file.xls"
        Console.WriteLine(GetCustomerNumber(a))
        Console.WriteLine(GetCustomerNumber(b))
        Console.WriteLine(GetCustomerNumber(c))
        Console.WriteLine(GetCustomerNumber(d))
        Console.WriteLine(GetCustomerNumber(e))

        Console.ReadLine()

    End Sub

End Module

所有示例都输出“5678”。

答案 1 :(得分:0)

正则表达式可以使用

Dim numRegex As New Regex("\d+")
Dim number As String = numRegex.Match("abc1234blahblah").Value