[英]insert a String inside another String
我該如何做:
var originalString = "http://name.domain.com/image.jpg"
變成這個:
originalString = "http://name.domain.com/image_new.jpg"
我在Swift中找不到有關新Range<String.Index>
任何文檔。
在Obj-C中這不是問題,但是如果沒有有關Range
任何參考,它突然變得如此混亂。
謝謝。
編輯:嗯,感謝這些解決方案。 但是,讓我為您提供有關此問題的更多詳細信息。
將圖像上傳到服務器后,它會像上面一樣使用String
鏈接進行響應,並且image name
是隨機字符串。
服務器還會生成不同版本的上載圖像(例如Flickr)。 為了獲得這些圖像,我必須在圖像名稱后添加一個后綴,如下所示:
originalString = "http://image.domain.com/randomName_large.jpg"
或"http://image.domain.com/randomName_medium.jpg"
所以這就是為什么我需要在另一個String
插入一個String
的原因。 我的解決方案是找到第一個.
通過向后掃描鏈接並在其前面添加后綴,但是新的Range<String.Index>
使其變得混亂。
您應該可以在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)
我只是在瀏覽器中輸入了它(未經測試),但是它應該可以給您一個想法...
這可以通過String操作函數來完成。 但是如果字符串是
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
為什么不使用字符串插值?
var imageName = "image_new"
originalString = "http://images.domain.com/\(imageName).jpg"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.