【问题标题】:Replace occurrences of space in URL替换 URL 中出现的空格
【发布时间】:2011-03-27 06:34:18
【问题描述】:

我在 iPhone 应用程序中有一个 URL 可以使用。但问题是它在 URL 中有一些空格。我想用 '%20' 替换空格。我知道有stringByReplacingOccurencesOfStringstringByAddingPercentEscapesUsingEncoding 方法。我也用过它们。但他们不为我工作。空格被一些不寻常的值替换。

我将这些方法应用于NSString 的实例。

【问题讨论】:

标签: ios objective-c nsstring nsurl


【解决方案1】:

从url替换空格的正确格式是:

斯威夫特 4.2,斯威夫特 5

var urlString = originalString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)

斯威夫特 4

var urlString = originalString.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)

目标 C

NSString *urlString;//your url string.

urlString = [originalUrl stringByReplacingOccurrencesOfString:@" " withString:@"%20"];

urlString = [originalUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

iOS 9 及更高版本

urlString = [originalUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

【讨论】:

  • @RaquibulIslam 我编辑了我的答案,请立即查看
  • 我认为 stringByReplacingPercentEscapesUsingEncoding() 已被弃用。相反,我们可以使用 stringByRemovingPercentEncoding
  • 它适用于本地路径吗?我的意思是文档目录
  • @guru 我认为您不需要为本地文档目录格式化路径
【解决方案2】:

Swift 2.0

let originalUrl = "http://myurl.com/my photo.png"
let urlNew:String = urlReq.stringByAddingPercentEncodingWithAllowedCharacters( NSCharacterSet.URLQueryAllowedCharacterSet())! 

输出:

http://myurl.com/my%20photo.png

【讨论】:

    【解决方案3】:

    斯威夫特 4

    另一种使用replaceOccurrences方法替换空格的方法:

    let yourString = "http://myurl.com/my photo.png"
    let urlNew:String = yourString.replacingOccurrences(of: " ", with: "%20").trimmed 
    

    这会将空格(“”)替换为“%20”

    【讨论】:

    • 错误:'String' 类型的值没有成员'trim'
    • @Mehdico 这很奇怪,我总是修剪琴弦。在此示例中,您不必修剪字符串,因为您知道它是什么。但我会清理项目并尝试再次运行它。在字符串末尾添加 .trimmed
    • 老兄,我认为您使用 String 类的扩展名,因为 .trimmed 在 swift 4 和 4.2 中找不到
    • 您不必修剪字符串以替换空格
    • 试试这个编码:- stringByAddingPercentEncodingWithAllowedCharacters: URLPathAllowedCharacterSet 和解码:- [NSURL fileURLWithPath:[self.yourString stringByRemovingPercentEncoding]]
    【解决方案4】:

    替换 SWIFT 3 中的出现:

    let updatedUrl = originalUrl.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)
    

    【讨论】:

    • 它适用于本地路径吗?我的意思是文档目录
    【解决方案5】:

    SWIFT 3.1

    用replacementOccurrences替换空白空间的简单方法:

    URL = URL.replacingOccurrences(of: " ", with: "", options: .literal, range: nil)
    

    【讨论】:

    • 不起作用,因为 URL 没有成员“replacingOccurences”。 String 有这个方法,但 URL 没有。
    【解决方案6】:

    Swift 4,iOS-9

    let **urlSearchVal**:String = "top 10 movies"     
    let urlString = 
    
        "https://www.googleapis.com/youtube/v3/search?part=snippet&q=\(urlSearchVal)&key=......&type=video"   
    //replace ...... above with your youtube key   
    // to ignoring white space in search  
            let UrlString :String = urlString.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)!
    

    【讨论】:

    • 欢迎来到 SO。请提高你的回答质量
    【解决方案7】:
    var urlString :String = originalUrl.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)!
    

    【讨论】:

    • 你需要对这段代码做更多的解释。还有其他人来这个问题寻求理解而不仅仅是代码。也帮助他人。
    【解决方案8】:

    Swift 4 解决方案。您只需传递一个字符串,它会用 %20 填充空格并将“http://”添加到字符串的开头。好甜!

    URL(fileURLWithPath: String) 
    

    【讨论】:

      【解决方案9】:

      斯威夫特 5

      var urlString = originalString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
      

      【讨论】:

      • 它适用于本地路径吗?我的意思是文档目录
      【解决方案10】:

      希望这会奏效

      let url = "https:youtube.56432fgrtxcvfname=xyz&sname=tuv"
      let urlNew:String = url.replacingOccurrences(of: " ", with: "%20")
      Alamofire.request(urlNew, method: .get, headers: headers).responseJSON{
      response in
      print(response)    
      }
      

      它将从 url 中删除所有类型的空格。

      【讨论】:

        【解决方案11】:

        Swift 5.3,清空你的字符串,

        let str = "  www.test.com  "
        let trimmed = str.trimmingCharacters(in: .whitespacesAndNewlines)
        print(str) // "www.test.com" 
        

        【讨论】:

          猜你喜欢
          • 2015-05-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-20
          • 1970-01-01
          • 2014-08-19
          • 2013-01-14
          相关资源
          最近更新 更多