我正在尝试编写一个非常简单的程序,需要在文本框中输入4位数字,目标是打开一个以这些输入的4位数字结尾的文件夹。
我到目前为止的代码如下:
Private Sub GoBut_Click(sender As System.Object, e As System.EventArgs) Handles GoBut.Click
Dim wdcode As String
Dim wd_path As String
Dim design_drive As String
wdcode = TextCode.Text
design_drive = "Y:\Sample Code Sequence\"
wd_path = design_drive & wdcode
Process.Start("explorer.exe", String.Format("/n, /e, {0}", wd_path))
End Sub
我是VB的相对新手所以请保持相当直接。我希望在资源管理器中打开的文件夹长度为8位,位于子目录中。
因此,总而言之,文件夹和子文件夹采用以下格式:
Y:/Sample Code Sequence/1001 - 1100/15061089
Y:/Sample Code Sequence/1001 - 1100/15061090
Y:/Sample Code Sequence/1001 - 1100/15061091
Y:/Sample Code Sequence/1001 - 1100/15071092
....
Y:/Sample Code Sequence/1101 - 1200/15071111
Y:/Sample Code Sequence/1001 - 1100/15071131
etc
8位数文件夹名称的最后4位数字是唯一的。
答案 0 :(得分:0)
递归函数可能更适合长期可重用性,但我把它写成一个嵌套循环。它采用您的基目录(在您的情况下,“Y:\ Sample Code Sequence”)并使用DirectoryInfo类的GetDirectories函数返回基目录的子目录。然后循环遍历这些子目录并执行相同的操作,然后在找到匹配项时返回该目录的完整路径(如果未找到匹配项,则返回Nothing)。
@SharedPref
public interface SharedPreferencesInterface {
@DefaultBoolean(true)
boolean showDeviceName();
答案 1 :(得分:0)
您可以使用接受通配符的My.Computer.FileSystem.GetDirectories
(MSDN):
Dim found As String = My.Computer.FileSystem.GetDirectories("Y:\Sample Code Sequence\", _
FileIO.SearchOption.SearchAllSubDirectories, _
"*1089").FirstOrDefault()
MessageBox.Show(found)
要应用此功能,您需要将您要查找的值连接到" *"。
您可以添加进一步的检查;例如,要检查文件夹名称是否包含8个字符(结尾1089):
Dim found2 As String = My.Computer.FileSystem.GetDirectories("Y:\Sample Code Sequence\", _
FileIO.SearchOption.SearchAllSubDirectories, _
"*1089").Where(Function(x) x.LastIndexOf("\"c) = x.LastIndexOf("1089") - 5).FirstOrDefault()
MessageBox.Show(found2)
通过使用????1089
进行搜索,实际上可以简化这一点,在哪里?是单个字符的通配符。
检查文件夹名称是否为8个字符,从4位开始,需要更多工作:
Dim found3 As String = My.Computer.FileSystem.GetDirectories("Y:\Sample Code Sequence\", _
FileIO.SearchOption.SearchAllSubDirectories, _
"*1089").Where(Function(x)
Return x.LastIndexOf("\"c) = x.LastIndexOf("1089") - 5 _
AndAlso IsNumeric(x.Substring(x.LastIndexOf("\"c) + 1, 4))
End Function).FirstOrDefault()
MessageBox.Show(found3)
如果您首先找到文件夹,然后单独检查文件夹名称,而不是像我所做的那样单个语句,将会更容易理解。
您还应该检查不匹配,Nothing
。