2017-09-08 1 views
-1

J'ai une chaîne d'URL "http: /// blaBla? Id = Testid851211" et je veux juste obtenir "851211".
ci-dessous est mon code: -Paramètres de l'URL Chaîne "http: // <Domain>/blaBla? Id = Testid851211" en utilisant swift

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 
    } 

Je reçois id = Testid851211 mais je veux seulement "851211".

+0

Jetez un coup d'oeil ici https://stackoverflow.com/a/41421727/7132300 – algrid

Répondre

0

utiliser une expression régulière filtrer les chiffres seulement:

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

Fonctionne aussi longtemps que vos URL ne sont pas des numéros nulle part ailleurs.

0

Essayez cette extension:

extension String { 

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

} 

Utilisation:

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

url.getNeededText(for: predefinedHost) // prints "851211"