如何从完整路径(VB.NET)中拆分特定路径中的目录名称

时间:2018-12-03 20:07:55

标签: vb.net

世界您好!

我遇到了一个问题。我正在获取包含在特定路径中的目录,并且我需要分离VB.NET给我的路径(像这样: “ D:\ ApplicationFolder \ Addons \ Pack_1”, “ D:\ ApplicationFolder \ Addons \ Pack_2” ...

仅对此: “ Pack_1”,“ Pack_2”

到目前为止,我已经尝试过了,但是我无法解决,我迷路了...

Dim ADDONPACKS_DIRECTORIES As String() = Directory.GetDirectories(ADDONS_PATH) ' GETTING ALL DIRECTORIES (PATHS) IN THIS PATH

    For Each ADDONPACKS_DIRECTORY In ADDONPACKS_DIRECTORIES ' TRYING TO SPLIT FULL PATH OF THESE DIRECTORIES TO GET ONLY THE NAME OF THESE DIRECTORIES

        ADDONPACKS_DIRECTORY.Split()

        Dim ADDONPACKS_LENGTH As Integer = ADDONPACKS_DIRECTORY.Length()
        MsgBox(ADDONPACKS_DIRECTORY(2))

    Next

    ' Here I want to assign names of these directories onto a label. But the fields only show letters instead of the path segments.

    Addonpack1.Text = ADDONPACKS_DIRECTORIES(0)
    Addonpack2.Text = ADDONPACKS_DIRECTORIES(1)
    Addonpack3.Text = ADDONPACKS_DIRECTORIES(2)
    Addonpack4.Text = ADDONPACKS_DIRECTORIES(3)
    Addonpack5.Text = ADDONPACKS_DIRECTORIES(4)
    'Addonpack6.Text = ADDONPACKS_DIRECTORY(5)

有什么想法吗?非常感谢您提供进一步的帮助。

1 个答案:

答案 0 :(得分:0)

string.Split()是一个函数:它返回一个值。

在这里:ADDONPACKS_DIRECTORY.Split(),您正在使用默认的分隔符(空格)分割字符串,但是结果未分配给任何内容,因此会丢失(但仍然无济于事)。

此:MsgBox(ADDONPACKS_DIRECTORY(2)),将仅显示当前目录路径的一个字符。字符串是字符的集合(数组)。您要显示第三个。

如果您认为不再需要完整的目录列表,则可以直接Split初始集合:

Dim ADDONPACKS_DIRECTORIES As String() = Directory.GetDirectories(ADDONS_PATH).
    Select(Function(d) d.Split("\"c).Last()).ToArray()

Addonpack1.Text = ADDONPACKS_DIRECTORIES(0)
'(...)

如果您稍后要使用该路径集合,则可以Split每个路径并将结果分配给每个TextBox.Text属性,而保持原始集合不变:

Addonpack1.Text = ADDONPACKS_DIRECTORIES(0).Split("\"c).Last()
Addonpack2.Text = ADDONPACKS_DIRECTORIES(1).Split("\"c).Last()
'(...)

您事先知道您将拥有多少个插件吗?
如果不是,则每个路径的TextBox可能不是用作输出的正确对象。
也许您可以使用单个多行TextBox。它的Lines()属性将保存您附加的所有子路径的数组。

使用第一个代码段,可能是这样的:

For Each subpath As String In ADDONPACKS_DIRECTORIES
    TextBox1.AppendText(subpath & Environment.NewLine)
Next

注意
正如 LarsTech 在评论中指出的那样,您可以使用Path.GetFileName()来使用路径分隔符来分隔路径。
它可以同时使用文件名和路径名,因为Path.GetFileName会在第一次找到路径分隔符时返回路径的子字符串,从头到尾解析该字符串,无论该子字符串代表的是路径还是文件名。

Addonpack1.Text = Path.GetFileName(ADDONPACKS_DIRECTORIES(0))
'(...)