美文网首页
iOS 关于URL编解码,替换对应key的value

iOS 关于URL编解码,替换对应key的value

作者: Persistent丧心病狂 | 来源:发表于2022-05-24 14:47 被阅读0次
    func findValueFromUrl(urlStr: String, key: String) -> String {
            guard let urlComponents = NSURLComponents(string: urlStr) else {
                return ""
            }
            guard (urlComponents.queryItems?.count) != nil else {
                return ""
            }
            guard let queryItems = urlComponents.queryItems else {
                return ""
            }
            for item in queryItems {
                if item.name == key {
                    return item.value ?? ""
                }
            }
            return ""
        }
        func appendNewValueToUrl(urlStr: String, param: String) -> String {
            if urlContainsParam(urlStr) {
                return urlStr + "&" + param
            } else {
                return urlStr + "?" + param
            }
        }
        
        @objc dynamic func urlContainsParam(_ url: String) -> Bool {
            guard let urlComponents = NSURLComponents(string: url) else {
                return false
            }
            return ((urlComponents.queryItems?.isEmpty) != nil)
        }
        func modifyParameter(urlStr: String, key: String, toValue: String) -> String {
            guard let urlComponents = NSURLComponents(string: urlStr) else {
                return ""
            }
            for i in 0..<(urlComponents.queryItems?.count ?? 0) {
                if urlComponents.queryItems?[i].name == key {
                    urlComponents.queryItems?[i].value = toValue
                }
            }
            
            return urlComponents.url?.absoluteString ?? ""
        }
    
    extension String {
        //将原始的url编码为合法的url
        func urlEncoded() -> String {
            var allowedQueryParamAndKey = NSCharacterSet.urlQueryAllowed
            allowedQueryParamAndKey.remove(charactersIn: "!*'\"();:@&=+$,/?%#[]% ")
            return self.addingPercentEncoding(withAllowedCharacters: allowedQueryParamAndKey) ?? ""
        }
            //将编码后的url转换回原始的url
            func urlDecoded() -> String {
                return self.removingPercentEncoding ?? ""
            }
        
    }
    

    相关文章

      网友评论

          本文标题:iOS 关于URL编解码,替换对应key的value

          本文链接:https://www.haomeiwen.com/subject/ykbjprtx.html