0

我有一个小问题。在程序结束时,它应该删除一个文件夹。

为了拒绝删除包含某个单词的文件夹,我想检查一个字符串(directory.fullname.tostring)是否包含存储在字符串数组中的任何元素。字符串数组包含说明异常词的字符串。

这是我走了多远,我知道解决方案与此处所述相反:

If Not stackarray.Contains(dir.FullName.ToString) Then

                Try
                    dir.Delete()
                    sw.WriteLine("deleting directory " + dir.FullName, True)
                    deldir = deldir + 1
                Catch e As Exception
                    'write to log
                    sw.WriteLine("cannot delete directory " + dir.ToString + "because there are still files in there", True)
                    numbererror = numbererror + 1
                End Try
            Else
                sw.WriteLine("cannot delete directory " + dir.ToString + "because it is one of the exception directories", True)
            End If
4

2 回答 2

0

与其检查数组是否包含完整路径,不如反其道而行之。循环遍历数组中的所有项目并检查路径是否包含每个项目,例如:

Dim isException As Boolean = False
For Each i As String In stackarray
    If dir.FullName.ToString().IndexOf(i) <> -1 Then
        isException = True
        Exit For
    End If
Next
If isException Then
    ' ...
End If

或者,如果你想更花哨,你可以使用 Array.Exists 方法用更少的代码行来完成,像这样:

If Array.Exists(stackarray, Function(x) dir.FullName.ToString().IndexOf(x) <> -1) Then
    ' ...
End If
于 2013-09-23T11:40:37.007 回答
0

尝试这个 :

foldersToDelete.Any(Function(folder) dir.ToLower.Contains(folder.ToLower)

你可以在这里查看更多信息

于 2021-04-09T12:58:54.800 回答