2016-01-13 5 views
0

Код ниже находит шрифт Arial, но я хотел бы найти все шрифты Arial в названии (так что "Arial Rounded", "Arial Unicode" и т. Д. .). Я должен иметь возможность использовать wild card правильно? Я не должен знать, где это происходит. Может ли кто-нибудь помочь мне отозвать все шрифты, в которых есть «Arial»?Найти все шрифты с "Arial" в названии

Const FONTS = &H14& 

Set objShell = CreateObject("Shell.Application") 
Set objFolder = objShell.NameSpace(FONTS) 
Set objFolderItem = objFolder.Self 

Set colItems = objFolder.Items 
For Each objItem In colItems 
    If objItem = "Arial" Then 
     Wscript.Echo objItem.Name 
    End If 
Next 

ответ

1

У вас его уже есть. Вам просто нужно проверить, если имя элемента содержит (суб) строку «Arial»:

For Each objItem in colItems 
    If InStr(LCase(objItem.Name), "arial") > 0 Then 
     WScript.Echo objItem.Name 
    End If 
Next 

lowercasing имени, чтобы сделать сравнение без учета регистра.

Альтернатива (несколько неуклюжего) InStr сравнения будет проверить имя элемента с регулярным выражением:

Set re = New RegExp 
re.Pattern = "arial" 
re.IgnoreCase = True 

For Each objItem in colItems 
    If re.Test(objItem.Name) Then 
     WScript.Echo objItem.Name 
    End If 
Next 
Смежные вопросы