一个非常好的子串错误

时间:2012-08-17 01:19:39

标签: vb.net visual-studio-2010 substring

我在解析目录的字符串数组时遇到问题。最终目标是查询与[global] .MyDataDir&的关联路径。 “\ saved”获取此目录中的所有文件夹。然而实际的foldernames,最后一个索引“\”之后的文本的最后一位保存了我需要与插件的枚举列表进行比较的插件的名称,以获得我将不会涉及的更多功能。这里的问题是我的最后一点代码无法正常工作。 Dim foldername为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

Semper Fi。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

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

感谢您的帮助。