世界您好!
我遇到了一个问题。我正在获取包含在特定路径中的目录,并且我需要分离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)
有什么想法吗?非常感谢您提供进一步的帮助。
答案 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))
'(...)