在另一个String中插入一个String

时间:2014-12-08 11:39:14

标签: ios swift

我该怎么做:

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>会让它变得混乱。

3 个答案:

答案 0 :(得分:2)

NSString上有一些nice and useful methods您应该能够使用:

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)

我只在浏览器中输入了这个(它未经测试),但它应该给你一个想法......

答案 1 :(得分:0)

可以使用String操作函数完成。但如果是字符串呢 是

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

?您可能不希望替换字符串的第一个或所有匹配项 &#34;图像&#34;这里。

用于此目的的更好工具可能是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

答案 2 :(得分:0)

为什么不使用字符串插值?

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