url字符串轉(zhuǎn)字典 swift5

Code1:

/// url字符串轉(zhuǎn)字典
///
/// - Parameter urlString: urlString字符串
/// - Returns: [String: Any]
public func urlStringtoParams(_ urlString:String) -> [String: Any] {
    // 1 保存參數(shù)
    var url_array = [""]
    // 2 內(nèi)容中是否存在?或者//
    if urlString.contains("?") {
        url_array = urlString.components(separatedBy:"?")
    }else{
        url_array = urlString.components(separatedBy: "http://")
    }
    // 3 多個參數(shù)忿墅,分割參數(shù)
    let urlComponents = url_array[1].components(separatedBy: "&")
    // 4 保存返回值
    var params = [String: Any]()
    // 5 遍歷參數(shù)
    for keyValuePair in urlComponents {
        // 5.1 分割參數(shù) 生成Key/Value
        let pairComponents = keyValuePair.components(separatedBy:"=")
        // 5.2 獲取數(shù)組首元素作為key
        let key = pairComponents.first?.removingPercentEncoding
        // 5.3 獲取數(shù)組末元素作為value
        let value = pairComponents.last?.removingPercentEncoding
        // 5.4 判斷參數(shù)是否是數(shù)組
        if let key = key, let value = value {
            // 5.5 已存在的值蚕礼,生成數(shù)組
            if let existValue = params[key] {
                // 5.8 如果是已經(jīng)生成的數(shù)組
                if var existValue = existValue as? [Any] {
                    // 5.9 把新的值添加到已經(jīng)生成的數(shù)組中去
                    existValue.append(value)
                    params[key] = existValue
                } else {
                    // 5.7 已存在的值,先將他生成數(shù)組
                    params[key] = [existValue, value]
                }
            } else {
                // 5.6 參數(shù)是非數(shù)組
                params[key] = value
            }
        }
    }
    return params
}

Use:

let string1 = "http://share?initiator_mobile=13881671333&activity_id=39&activity_id=20&activity_id=41&activity_id=481&activity_id=000"
let string2 = "http://activity_id=39&activity_id=20&activity_id=41&activity_id=481&activity_id=000"
let string3 = "http://initiator_mobile=13881678888"

let params1 = urlStringtoParams(string1)
let params2 = urlStringtoParams(string2)
let params3 = urlStringtoParams(string3)

print(params1)
print(params2)
print(params3)

Result

["activity_id": ["39", "20", "41", "481", "000"], "initiator_mobile": "13881671333"]
["activity_id": ["39", "20", "41", "481", "000"]]
["initiator_mobile": "13881678888"]

Code2:

extension URL {
    /// 獲取URL內(nèi)的Parameters
    func getUrlParameters() -> [String: String]? {
        
        var params: [String: String] = [:]
        
        let array = self.absoluteString.components(separatedBy: "?")
        if array.count == 2 {
            let paramsStr = array[1]
            if paramsStr.count > 0 {
                let paramsArray = paramsStr.components(separatedBy: "&")
                for param in paramsArray {
                    let arr = param.components(separatedBy: "=")
                    if arr.count == 2 {
                        params[arr[0]] = arr[1]
                    }
                }
            }
        }
        return params
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市矢劲,隨后出現(xiàn)的幾起案子远剩,更是在濱河造成了極大的恐慌子库,老刑警劉巖睁冬,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異溉贿,居然都是意外死亡枫吧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門宇色,熙熙樓的掌柜王于貴愁眉苦臉地迎上來九杂,“玉大人,你說我怎么就攤上這事宣蠕±。” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵抢蚀,是天一觀的道長镀层。 經(jīng)常有香客問我,道長皿曲,這世上最難降的妖魔是什么唱逢? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任吴侦,我火速辦了婚禮,結(jié)果婚禮上坞古,老公的妹妹穿的比我還像新娘备韧。我一直安慰自己,他們只是感情好痪枫,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布织堂。 她就那樣靜靜地躺著,像睡著了一般奶陈。 火紅的嫁衣襯著肌膚如雪捧挺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天尿瞭,我揣著相機與錄音,去河邊找鬼翅睛。 笑死声搁,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的捕发。 我是一名探鬼主播疏旨,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼扎酷!你這毒婦竟也來了檐涝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤法挨,失蹤者是張志新(化名)和其女友劉穎谁榜,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凡纳,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡窃植,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了荐糜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巷怜。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖暴氏,靈堂內(nèi)的尸體忽然破棺而出延塑,到底是詐尸還是另有隱情,我是刑警寧澤答渔,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布关带,位于F島的核電站,受9級特大地震影響研儒,放射性物質(zhì)發(fā)生泄漏豫缨。R本人自食惡果不足惜独令,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望好芭。 院中可真熱鬧燃箭,春花似錦、人聲如沸舍败。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽邻薯。三九已至裙戏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間厕诡,已是汗流浹背累榜。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留灵嫌,地道東北人壹罚。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像寿羞,于是被迫代替她去往敵國和親猖凛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容