我该怎么做:
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>
会让它变得混乱。
答案 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"