Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP-like string parsing

I'm writing a mini-console of sorts and I'm trying to figure out how to extract things from a link. For example, in PHP this is a request variable so:

http://somelink.com/somephp.php?variable1=10&variable2=20

Then PHP figures out the url parameters and assigns them to a variable.

How would I parse something like this in Swift?

So, given the string I'd want to take: variable1=10 and variable2=20 etc, is there a simple way to do this? I tried googling around but didn't really know what I was searching for.

I have a really horrible hacky way of doing this but it's not really extendable.

like image 495
Scott Avatar asked Mar 15 '23 23:03

Scott


1 Answers

You’d be wanting NSURLComponents:

import Foundation

let urlStr = "http://somelink.com/somephp.php?variable1=10&variable2=20"
let components = NSURLComponents(string: urlStr)

components?.queryItems?.first?.name   // Optional("variable1")
components?.queryItems?.first?.value  // Optional("10")

You might find it helpful to add a subscript operator for the query items:

extension NSURLComponents {
    subscript(queryItemName: String) -> String? {
        // of course, if you do this a lot, 
        // cache it in a dictionary instead
        for item in self.queryItems ?? [] {
            if item.name == queryItemName {
                return item.value
            }
        }
        return nil
    }
}

if let components = NSURLComponents(string: urlStr) {
    components["variable1"] ?? "No value"
}
like image 107
Airspeed Velocity Avatar answered Mar 23 '23 21:03

Airspeed Velocity