【问题标题】:Parameters from URL String "http://<Domain>/blaBla?id=Testid851211" using swift使用 swift 来自 URL 字符串“http://<Domain>/blaBla?id=Testid851211”的参数
【发布时间】:2017-09-08 07:00:35
【问题描述】:

我有一个 URL 字符串“http:///blaBla?id=Testid851211”,我只想获取“851211”。
下面是我的代码:-

    let url: NSURL = NSURL(string: urlString)!
    Helper.sharedInstance.Print(url.query as AnyObject)

    if (url.query?.localizedStandardContains("testKey"))! {
        //TestKey
        Helper.sharedInstance.Print(url.query as AnyObject)
        let testValue = getQueryStringParameter(url: urlString, param: "testKey")
        Helper.sharedInstance.Print(testValue as AnyObject)
    }

    else if (url.query?.localizedStandardContains("testID"))! {
        //TestID
        Helper.sharedInstance.Print(url.query as AnyObject)
    }

   func getQueryStringParameter(url: String, param: String) -> String? {
    guard let url = URLComponents(string: url) else { return nil }
    return url.queryItems?.first(where: { $0.name == param })?.value
   }

我得到 id = Testid851211 但我只想要“851211”。

【问题讨论】:

标签: ios swift string split


【解决方案1】:

使用正则表达式仅过滤掉数字:

let urlString = "http:///blaBla?id=Testid851211"
let pattern = "[0-9]+"
if let matchRange = urlString.range(of: pattern, options: .regularExpression) {
    print(urlString[matchRange])
}

只要您的网址在其他任何地方都没有数字,就可以使用。

【讨论】:

    【解决方案2】:

    试试这个扩展:

    extension String {
    
        func getNeededText(for url: String) -> String {
            guard range(of: url) != nil else { return "" }
            return replacingOccurrences(of: url, with: "")
        }
    
    }
    

    用法:

    let predefinedHost = "http:///blaBla?id=Testid"
    let url = "http:///blaBla?id=Testid851211"
    
    url.getNeededText(for: predefinedHost) // prints "851211"
    

    【讨论】:

      猜你喜欢
      • 2013-11-07
      • 1970-01-01
      • 2020-11-05
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      相关资源
      最近更新 更多