我在Xcode中有一个看起来像这样的游乐场
import UIKit
import AVFoundation
var url = "app://Wip%20My_Hair_Willow%20Smith_0_Tue%20May%2019%202015%2021:34:51%20GMT-0400%20(EDT)"
var info = url.stringByReplacingOccurrencesOfString("whenisay://", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil).stringByReplacingOccurrencesOfString("%20", withString: " ", options: NSStringCompareOptions.LiteralSearch, range: nil).stringByReplacingOccurrencesOfString("_", withString: "/", options: NSStringCompareOptions.LiteralSearch, range: nil)
var SlashOne = info.rangeOfString("/")!.startIndex
var SlashTwo = dropFirst(info.substringFromIndex(SlashOne)).rangeOfString("/")!.startIndex
var SlashThree = dropFirst(info.substringFromIndex(SlashTwo)).rangeOfString("/")!.startIndex
var SlashFour = dropFirst(info.substringFromIndex(SlashThree)).rangeOfString("/")!.startIndex
我想写下这个:
let first = info.substringToIndex(advance(info.startIndex, SlashOne))
这样我就可以在第一个" /"之前有一个子串。在info
,但它给了我错误:
Cannot find an overload for 'advance' that accepts an argument list of type '(String.Index, String.Index)'
如果我用一个整数替换SlashOne
,那么这最后一行是有效的,因此我只能假设“提前”#39;想要'(String.Index, Int)'
。
如何将SlashOne
转换为整数?我无法在任何地方找到它。你能做到吗?如果没有,我怎么能把这个字符串分开?
答案 0 :(得分:0)
分割字符串的更好方法是
let array = split(info){$0 == "/"}
这将返回一个数组
let first = splitedarray[0]//app:
let second = splitedarray[1]//Wip My
如果您坚持使用自己的方式,可以通过这种方式获得子串
let firstRange = Range<String.Index>(start: info.startIndex, end:SlashOne)
let first = info.substringWithRange(firstRange)//This is app: