簡體   English   中英

在另一個字符串中插入一個字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM