Как узнать, закодирована ли строка в iOS? - PullRequest
0 голосов
/ 08 июля 2019

Некоторые строки URL-адреса в ответе сервера имеют URL-кодировку, а некоторые - нет.Как выбрать те, которые не закодированы?


Обновлено:

Учитывая, что есть три вида строк:

  • допустимая строка URL-адреса, закодированная в URL-адресе;

  • допустимая строка URL-адреса, оригинальная (без кодировки URL-адреса);

  • недопустимая строка URL-адреса.

Я хочу создать URL из первых двух типов строк.

С теми, кто в первом роде, я просто позвоню init?(string:).

С теми, кто относится ко второму виду, мне придется кодировать их перед вызовом init?(string:)

Так как же эффективно и элегантно создать URL экземпляров из этих строк?

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Проверьте принятый ответ от: Как узнать, была ли строка уже закодирована в URL?

Там написано: Декодировать, сравнить с оригиналом. Если он отличается, оригинал кодируется. Если это не отличается, оригинал не закодирован. Но все же это ничего не говорит о том, не была ли недавно декодированная версия еще не закодирована. Хорошее задание для рекурсии.

Поскольку вы работаете над своим собственным ответом API, и строка URL-адреса будет либо закодирована, либо в виде простого текста; Вы можете просто декодировать один раз и сравнить с исходной строкой.

Прямодушная: Расшифруйте и проверьте, соответствует ли оно исходной строке.

  1. match - использовать исходную строку для проверки правильности URL, используя regexp
  2. не соответствует - используйте расшифрованную строку для действительного URL, используя regexp.
0 голосов
/ 08 июля 2019

Простой взлом: вы можете использовать regexp, чтобы проверить, содержит ли строка пробел, который вы обычно не получите в строке в кодировке URL.Это может помочь вам достичь вашей цели.В противном случае комментарий @rmaddy также является хорошим выбором.

...