检查字符串是否包含stringarray的任何元素(vb net)

时间:2013-09-23 06:28:00

标签: vb.net string compare contains arrays

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

为了拒绝删除文件夹,哪个目录包含某个单词,我想检查一个字符串(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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

试试这个:

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

您可以查看更多信息here