2014-12-08 3 views
0

Как я могу сделать это:вставить строку в другую строку

var originalString = "http://name.domain.com/image.jpg"

становится этим:

originalString = "http://name.domain.com/image_new.jpg"

Я не мог найти какой-либо документ о в Swift нового Range<String.Index>.
Это не проблема в Obj-C, но без каких-либо ссылок о Range, это внезапно становится настолько запутанным.

Спасибо.


Edit: Ну, спасибо за эти решения. Однако позвольте мне подробнее рассказать об этом вопросе.
После загрузки изображения на сервер он отвечает ссылкой String, как и выше, а image name - это случайная строка.
Сервер также генерирует разные версии загруженного изображения (например, Flickr). Для того, чтобы получить эти изображения, я должен добавить суффикс в имени образа, он выглядит следующим образом:

originalString = "http://image.domain.com/randomName_large.jpg" или "http://image.domain.com/randomName_medium.jpg"

Так вот почему мне нужно вставить String в другой String. Мое решение - найти первый ., отсканировав ссылку назад и добавить суффикс перед этим, но новый Range<String.Index> делает это запутанным.

ответ

2

Есть некоторые nice and useful methods на NSString, что вы должны быть в состоянии использовать:

let originalString: NSString = "http://name.domain.com/image.jpg" 

let extension = originalString.pathExtension // "jpg" 
let withoutExt = originalString.stringByDeletingPathExtension() // "http://name.domain.com/image" 
let imageName = withoutExt.lastPathComponent // "image" 
let withoutFilename = withoutExt.stringByDeletingLastPathComponent() // "http://name.domain.com/" 

let newString = withoutFilename 
    .stringByAppendingPathComponent("\(imageName)_new") 
    .stringByAppendingPathExtension(extension) 

я только напечатал это в браузере (это непроверенные), но это должно дать вам идею ...

0

Этот может быть выполнен с функциями манипуляции строками. Но что, если строка является

var originalString = "http://images.domain.com/image.jpg" 

? Вероятно, вы не хотите заменять первое или все вхождения строки «image» здесь.

Лучший инструмент для этой цели может быть NSURLComponents, что позволяет изменять все компоненты URL отдельно:

var originalString = "http://name.domain.com/image.jpg" 
let urlComps = NSURLComponents(string: originalString)! 
urlComps.path = "/image_new.jpg" 
originalString = urlComps.URL!.absoluteString! 

println(originalString) // http://name.domain.com/image_new.jpg 
0

Почему не использовать интерполяцию строки?

var imageName = "image_new" 
originalString = "http://images.domain.com/\(imageName).jpg" 
+0

Потому что у меня нет имени изображения. Он откликнулся с сервера. Пожалуйста, уточните мой обновленный вопрос. –

Смежные вопросы