我在这里有一个字符串,我正在尝试子字符串。
let desc = "Hello world. Hello World."
var stringRange = 1..<5
desc.substringWithRange(stringRange)
然而Swift给我一个错误。我做错了什么?我正在使用stringRange的新表示法,因为它不允许我使用旧的表示法。
答案 0 :(得分:7)
您创建的Range
没有正确的类型,推断为Int
。您需要从字符串本身创建范围:
let desc = "Hello world. Hello World."
let stringRange = desc.startIndex..<desc.startIndex.advancedBy(5)
let sub = desc[stringRange]
String
稍微复杂一些。或者,返回NSString
和NSRange
:
let range = NSMakeRange(0, 5)
let sub2 = (desc as NSString).substringWithRange(range)
答案 1 :(得分:3)
您的1..<5
来自Range<Int>
类型,而方法substringWithRange
需要来自Range<Index>
类型的值
let desc = "Hello world. Hello World."
var dd = desc.substringWithRange(desc.startIndex..<desc.startIndex.advancedBy(5))
您也可以将advanceBy
应用于desc.startIndex