这个问题在这里已有答案:
我试图从一个字符串中获取一个子字符串使用该范围没有运气。经过高低搜索,我找不到办法在Swift中做这个看似简单明了的任务。范围是从委托方法获得的NSRange的形式。
在Objective-c中,如果你有一个范围,你可以这样做:
NSString * text = "Hello World";
NSString *sub = [text substringWithRange:range];
根据this answer的说法,以下内容适用于Swift:
let mySubstring = text[range] // play
let myString = String(mySubstring)
但是,当我尝试这个时,我收到一个错误:
不能使用索引类型为“NSRange”(又名“_NSRange”)下标“String”类型的值
我认为问题可能与使用NSRange而不是范围有关,但我无法弄清楚如何让它工作。谢谢你的任何建议。
问题是你不能使用String
下标NSRange
,你必须使用Range
。尝试以下方法:
let newRange = Range(range, in: text)
let mySubstring = text[newRange]
let myString = String(mySubstring)
请再次阅读您的链接问题。
您会注意到Swift中的String不能与Range<Int>
一起使用但是使用Range<String.Index>
并且绝对不能使用NSRange
在字符串上使用范围的示例:
let text = "Hello world"
let from = text.index(after: text.startIndex)
let to = text.index(from, offsetBy: 4)
text[from...to] // ello