出于某种原因,这句话完全绕过了包含所述文字的文件夹,我做错了什么?
For Each fold As String In Directory.GetDirectories("C:\documents")
If fold.Contains("pdf") Then
我在c:\ documents文件夹中有文件夹,名称如下:
pdfone
pdfretrieve
extrapdf
当VS通读时,我看到了字符串:
"c:\documents\pdfone"
"c:\documents\pdfretrieve"
"c:\documents\extrapdf"
但是它正好超过了它们并且没有进入If语句。
答案 0 :(得分:2)
是的,它是PDFone。 .Contains属性区分大小写吗?
String.Contains
区分大小写(与.NET框架中的大多数方法一样)。如果您想忽略这种情况,则必须使用String.IndexOf
:
If fold.IndexOf("pdf", StringComparison.InvariantCultureIgnorecase) >= 0 Then
MSDN在这里提及:
此方法执行序数(区分大小写和 文化不敏感)比较。搜索从第一个开始 这个字符串的字符位置,并持续到最后一个 角色位置。
另外,GetDirectories
返回包含其路径的目录名。因此,在完整路径上搜索子字符串容易出错。相反,您可以使用Path.GetFileName
(是的,不是GetDirectoryName
,因为它返回了备注中提到的父目录):
If Path.GetFileName(fold).IndexOf("pdf", StringComparison.InvariantCultureIgnorecase) >= 0 Then