无法将"Range <Int>"类型的值转换为预期的参数类型"Range <Index>"(又名"Range <String.CharacterView.Index>")

Big*_*tor 5 string substring swift

我在这里有一个字符串,我正在尝试子串.

let desc = "Hello world. Hello World."
var stringRange = 1..<5
desc.substringWithRange(stringRange)
Run Code Online (Sandbox Code Playgroud)

但是Swift给我一个错误.我做错了什么?我正在使用stringRange的新表示法,因为它不允许我使用旧的.

jrt*_*ton 7

Range你已经创建了不正确的类型,它被推断为一个Int.您需要从字符串本身创建范围:

let desc = "Hello world. Hello World."
let stringRange = desc.startIndex..<desc.startIndex.advancedBy(5)
let sub = desc[stringRange]
Run Code Online (Sandbox Code Playgroud)

它稍微复杂一些String.或者,返回NSStringNSRange:

let range = NSMakeRange(0, 5)
let sub2 = (desc as NSString).substringWithRange(range)
Run Code Online (Sandbox Code Playgroud)