Похоже на домашнее задание, учитывая, что решение должно использовать регулярное выражение, исходя из этого предположения, вот схема, чтобы вы начали.
Если все, что у вас есть, это URL, тогда подойдет решение @ mat.coffee. Однако если у вас есть фрагмент текста, в котором есть один или несколько URL-адресов, и вам нужно найти и изменить только те из них, вам понадобится нечто более сложное.
Посмотрите на структуру URL: {протокол} {адрес} {элемент}; где
- {протокол} - "http://"," ftp: // "и т. Д .;
- {адрес} - это имя, например, "www.google.com" или число, например «74.125.237.116» - в адресе всегда будет хотя бы одна точка; и
- {item} - это "/ name", где name довольно гибко - будет ноль или более элементов, вы можете рассматривать их как каталоги и файл но это не совсем верно. Также последовательность элементов может заканчиваться на «/» (в том числе, когда их ноль).
Создание регулярного выражения, соответствующего URL, начинается с сопоставления каждой части. В случае элементов, которые вы хотите сопоставить с последним в последовательности отдельно - у вас будет ноль или более «каталогов» и один «файл», последний должен иметь форму «name.extension».
Получив регулярные выражения для каждой части, вы просто объединяете их, чтобы получить регулярное выражение для целого. Чтобы сформировать шаблон замены, вы можете заключить части вашего регулярного выражения в круглые скобки и обратиться к этим частям, используя \ number в строке замены - см., Например, решение @matic.coffee.
Лучший способ выучить регулярные выражения - использовать редактор, который их поддерживает, и просто экспериментировать. Точный синтаксис может не совпадать с NSRegularExpression
, но в основном он очень похож на основной материал, и вы можете легко переводить с одного на другой.