【问题标题】:How do I split/parse a URL string into an object?如何将 URL 字符串拆分/解析为对象?
【发布时间】:2019-05-14 22:22:33
【问题描述】:

我正在尝试将 URL 拆分为对象。

$url = "https://api.somedomain.com/v2/direct-access/producing-entities-details?entity_id=104194825&format=json&page=1

想要的结果是

PS C:\WINDOWS\system32> $url.api 
https://api.somedomain.com/v2/direct-access

PS C:\WINDOWS\system32> $url.dataset
producing-entities-details

PS C:\WINDOWS\system32> $url.params
entity_id=104194825&format=json&page=1 

我确信这可以与正则表达式结合使用,但我也想知道这是否可以仅使用内置的 PowerShell 功能来完成。

【问题讨论】:

    标签: string powershell object url


    【解决方案1】:

    无需乱用正则表达式。 [uri] type accelerator 会为您完成一些工作。其他部分似乎特定于您选择解释数据的方式,而不是 URL 解剖的工作方式。

    PS C:\Users\matt> $url = [uri]"https://api.somedomain.com/v2/direct-access/producing-entities-details?entity_id=104194825&format=json&page=1"
    
    PS C:\Users\matt> $url.Query
    ?entity_id=104194825&format=json&page=1
    

    您可以探索其他属性,看看它们将如何帮助您。例如,您可能需要构建 Segments 以获取您正在寻找的其他部分。

    PS C:\Users\matt>   $url.Segments
    /
    v2/
    direct-access/
    producing-entities-details
    

    【讨论】:

      【解决方案2】:
      $url = "https://api.somedomain.com/v2/direct-access/producing-entities-details?entity_id=104194825&format=json&page=1"
      
      $uri = [System.Uri]$url
      
      $ParsedQueryString = [System.Web.HttpUtility]::ParseQueryString($uri.Query)
      
      $i = 0
      $queryParams = @()
      foreach($QueryStringObject in $ParsedQueryString){
          $queryObject = New-Object -TypeName psobject
          $queryObject | Add-Member -MemberType NoteProperty -Name Query -Value $QueryStringObject
          $queryObject | Add-Member -MemberType NoteProperty -Name Value -Value $ParsedQueryString[$i]
          $queryParams += $queryObject
          $i++
      }
      $queryParams
      

      输出:

      Query     Value
      -----     -----
      entity_id 104194825
      format    json
      page      1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-20
        • 1970-01-01
        • 2023-03-28
        • 2020-03-31
        • 1970-01-01
        相关资源
        最近更新 更多