我正在尝试使用不带运气的范围从字符串中获取子字符串。在上下搜索之后,我找不到在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'(aka'_NSRange')
我认为问题可能与使用NSRange而不是范围有关,但我不知道如何使它工作。感谢您的任何建议。
答案 0 :(得分:1)
请再读一次您的链接问题。
您会注意到,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
答案 1 :(得分:1)
问题是您不能使用String
下标NSRange
,而必须使用Range
。尝试以下方法:
let newRange = Range(range, in: text)
let mySubstring = text[newRange]
let myString = String(mySubstring)