我在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,那么最后一行就能工作了,所以我只能假设'advance‘想要'(String.Index, Int)'。
如何将SlashOne转换为整数?我哪儿都找不到。你能做到吗?如果没有,我怎么能把这条绳子分开呢?
发布于 2015-05-20 04:13:21
拆分字符串的一个更好的方法是
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:https://stackoverflow.com/questions/30340034
复制相似问题