-1

I have a URL String "http:///blaBla?id=Testid851211" and I just want to get "851211".
Below is my code :-

    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
   }

I am getting id = Testid851211 but I want only "851211".

Kishor Pahalwani
  • 1,010
  • 1
  • 23
  • 53

2 Answers2

0

Use a regular expression filtering out numbers only:

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

Works as long as your URLs don’t have numbers anywhere else.

Tom E
  • 1,530
  • 9
  • 17
0

Try this extension:

extension String {

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

}

Usage:

let predefinedHost = "http:///blaBla?id=Testid"
let url = "http:///blaBla?id=Testid851211"

url.getNeededText(for: predefinedHost) // prints "851211"
Vlad Khambir
  • 4,313
  • 1
  • 17
  • 25