在swift中使用String.Indexes作为整数

时间:2015-05-20 03:59:29

标签: ios swift

我在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转换为整数?我无法在任何地方找到它。你能做到吗?如果没有,我怎么能把这个字符串分开?

1 个答案:

答案 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: