0

我在解析目录字符串数组时遇到问题。最终目标是查询与 [global].MyDataDir & "\saved" 相关的路径以获取此目录中的所有文件夹。然而,实际的文件夹名称,最后一个 indexof "\" 之后的最后一段文本包含一个插件的名称,我需要将其与插件的枚举列表进行比较以获得更多功能,我不会在这里介绍。这里的问题是我的最后一点代码不起作用。Dim 文件夹名称为 String = (etc...),它返回一个错误,指出索引和长度必须引用字符串中的位置。参数名称:长度。

你们中的任何一个巫师都可以在这里帮助我。非常感激。

Dim dirList As String() = System.IO.Directory.GetDirectories([global].MyDataDir & "\saved")
For dir As Integer = 0 To dirList.Length - 1
    If IO.Directory.GetFiles(dirList(dir)).Length > 0 Then
        For Each file As String In IO.Directory.GetFiles(dirList(dir))

            Dim folderName As String = dirList(dir).ToString.Substring(dirList(dir).ToString.LastIndexOf("\"), dirList(dir).ToString.Length - 1)

        Next
    End If
Next

森帕菲。

4

2 回答 2

3

请改用 System.IO.Path.GetDirectoryName()。

下次使用 VB.NET Left() 便利函数来避免出错。

于 2012-08-17T01:25:25.333 回答
0

我找到了原因......

问题在于 Substring 的参数(起始索引,起始索引的副本长度)。我的印象是,长度参数在计算长度时会考虑整个字符串。相反,此函数的第二个参数作用于第一个参数的结果,而不是整个字符串。因此,字符串的长度实际上比对其进行索引后存在的长度要长得多。

谢谢您的帮助。

于 2012-08-17T13:19:48.107 回答