如何知道一个字符串是否被url编码为iOS?

How to know whether a string is url encoded in iOS?

后端响应中的一些 url 字符串是 url 编码的,而有些则不是。如何挑出未编码的?


更新:

假设有三种字符串:

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

对于第一类,我就叫init?(string:)

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

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

一个简单的 hack 是您可以使用 regexp 来检查字符串是否包含通常不会出现在 URL-encoded 字符串中的空格。这可能会帮助您实现目标。另外@rmaddy的评论也是不错的选择。

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

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

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

Straight-forward: 解码并检查它是否与原始字符串匹配。

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