代码之家  ›  专栏  ›  技术社区  ›  Benjamin Jones

查找名称中带有“Arial”的所有字体

  •  0
  • Benjamin Jones  · 技术社区  · 9 年前

    下面的代码找到了字体“Arial”,但我想找到标题中所有的Arial字体(如“ArialRounded”、“ArialUnicode”等)。我应该可以使用通配符,对吗?我一定不知道它去了哪里。有人能帮我呼应所有有“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 回复  |  直到 9 年前
        1
  •  1
  •   Ansgar Wiechers    9 年前

    你几乎已经有了。您只需要检查项目名称是否包含(子)字符串“Arial”:

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

    名称的小写是为了使比较不区分大小写。

    替代(有点笨拙) 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