美文网首页
URL relativeTo

URL relativeTo

作者: craig_wang | 来源:发表于2017-12-08 15:25 被阅读30次

    直接看代码

    /// Alamofire
    let generalDelimitersToEncode = ":#[]@" // does not include "?" or "/" due to RFC 3986 - Section 3.4
    let subDelimitersToEncode = "!$&'()*+,;="
    
    /// 将后面的目录截去
    var url = URL(string: "http://www.jianshu.com/writer")
    if let relativeUrl = URL(string: "/", relativeTo: url) {
        print(relativeUrl.absoluteString) // http://www.jianshu.com/
    } else {
        print("relativeUrl is nil")
    }
    url = URL(string: "http://www.jianshu.com/writer/what")
    if let relativeUrl = URL(string: "/", relativeTo: url) {
        print(relativeUrl.absoluteString) // http://www.jianshu.com/
    } else {
        print("relativeUrl is nil")
    }
    
    /// 如果不是/ 就替换最后一个目录 (& * , + = 1 a)等
    url = URL(string: "http://www.jianshu.com/writer")
    if let relativeUrl = URL(string: "ok", relativeTo: url) {
        print(relativeUrl.absoluteString) // http://www.jianshu.com/ok
    } else {
        print("relativeUrl is nil")
    }
    url = URL(string: "http://www.jianshu.com/writer/what")
    if let relativeUrl = URL(string: "ok", relativeTo: url) {
        print(relativeUrl.absoluteString) // http://www.jianshu.com/writer/ok
    } else {
        print("relativeUrl is nil")
    }
    
    /// (# ; ?)直接跟在后面
    url = URL(string: "http://www.jianshu.com/writer")
    if let relativeUrl = URL(string: "#", relativeTo: url) {
        print(relativeUrl.absoluteString) // http://www.jianshu.com/writer#
    } else {
        print("relativeUrl is nil")
    }
    url = URL(string: "http://www.jianshu.com/writer/what")
    if let relativeUrl = URL(string: "#", relativeTo: url) {
        print(relativeUrl.absoluteString) // http://www.jianshu.com/writer/what#
    } else {
        print("relativeUrl is nil")
    }
    
    /// (.)相当于空字符替换最后一级目录
    url = URL(string: "http://www.jianshu.com/writer")
    if let relativeUrl = URL(string: ".", relativeTo: url) {
        print(relativeUrl.absoluteString) // http://www.jianshu.com/
    } else {
        print("relativeUrl is nil")
    }
    url = URL(string: "http://www.jianshu.com/writer/what")
    if let relativeUrl = URL(string: ".", relativeTo: url) {
        print(relativeUrl.absoluteString) // http://www.jianshu.com/writer/
    } else {
        print("relativeUrl is nil")
    }
    
    /// (:)无任何改变
    url = URL(string: "http://www.jianshu.com/writer")
    if let relativeUrl = URL(string: ":", relativeTo: url) {
        print(relativeUrl.absoluteString) // http://www.jianshu.com/writer
    } else {
        print("relativeUrl is nil")
    }
    url = URL(string: "http://www.jianshu.com/writer/what")
    if let relativeUrl = URL(string: ":", relativeTo: url) {
        print(relativeUrl.absoluteString) // http://www.jianshu.com/writer/what
    } else {
        print("relativeUrl is nil")
    }
    
    /// ([])转码替换
    url = URL(string: "http://www.jianshu.com/writer")
    if let relativeUrl = URL(string: "[", relativeTo: url) {
        print(relativeUrl.absoluteString) // http://www.jianshu.com/%5B
    } else {
        print("relativeUrl is nil")
    }
    url = URL(string: "http://www.jianshu.com/writer/what")
    if let relativeUrl = URL(string: "]", relativeTo: url) {
        print(relativeUrl.absoluteString) //http://www.jianshu.com/writer/%5D
    } else {
        print("relativeUrl is nil")
    }
    
    /// 无法生成正确的url -> ("", "\\", " ", "|", "^", "`", "<", ">", "\"", "{", "}")
    url = URL(string: "http://www.jianshu.com/writer")
    if let relativeUrl = URL(string: "", relativeTo: url) {
        print(relativeUrl.absoluteString)
    } else {
        print("relativeUrl is nil") // nil
    }
    url = URL(string: "http://www.jianshu.com/writer/what")
    if let relativeUrl = URL(string: "", relativeTo: url) {
        print(relativeUrl.absoluteString)
    } else {
        print("relativeUrl is nil") // nil
    }
    

    还不知道原因,如有请指教

    相关文章

      网友评论

          本文标题:URL relativeTo

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