【问题标题】:How to know whether a string is url encoded in iOS?如何知道字符串是否在 iOS 中进行了 url 编码?
【发布时间】:2019-07-08 05:19:06
【问题描述】:

后端响应中的一些 url 字符串是 url 编码的,而有些则不是。没编码的怎么挑出来?


更新:

鉴于存在三种字符串:

  • 有效的url字符串,url编码;

  • 有效的 url 字符串,原始(非 url 编码);

  • 无效的 url 字符串。

我想做的是从前两种字符串创建URL

对于第一类,我会打电话给init?(string:)

对于第二类,我必须在调用init?(string:)之前对其进行编码

那么如何从这些字符串高效优雅地创建URL 实例?

【问题讨论】:

  • 为什么需要知道?只需解码任何一种方式。如果它没有被编码,那么解码就不会做任何事情。

标签: ios urlencode


【解决方案1】:

检查接受的答案来自: How to find out if string has already been URL encoded?

它说: 解码,对比原版。如果确实不同,则对原始内容进行编码。如果没有差异,则原始文件未编码。但它仍然没有说明新解码的版本是否仍未编码。递归的好任务。

因为,您正在处理自己的 API 响应,并且 url 字符串将被编码或纯文本;您可以只解码一次并与原始字符串进行比较。

直截了当: 解码并检查它是否与原始字符串匹配。

  1. 匹配 - 使用原始字符串检查有效的 url 使用 regexp
  2. 不匹配 - 使用解码后的字符串作为有效 url,使用 regexp

【讨论】:

    【解决方案2】:

    一个简单的技巧是你可以使用regexp 来检查字符串是否包含你通常不会在 URL 编码字符串中得到的空格。这可能会帮助您实现目标。否则@rmaddy 的评论也是一个不错的选择。

    【讨论】:

      猜你喜欢
      • 2012-02-29
      • 2013-07-08
      • 2014-03-27
      • 2011-10-06
      • 1970-01-01
      • 2017-06-13
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多