Ios 在swift 3中,如何推进索引?
在iOS 10 beta 6中,我试图从索引1开始获取字符串的子字符串,这是一个令人头痛的问题,因为swifts字符串不断变化,而且许多文档已经过时且无用 String有子字符串(from:Index),但它不能接受整数(这种情况已经存在一段时间了),所以我计划使用startIndex并将其提升1,但现在Index没有advanceBy方法,所以我不能这样做:Ios 在swift 3中,如何推进索引?,ios,swift,Ios,Swift,在iOS 10 beta 6中,我试图从索引1开始获取字符串的子字符串,这是一个令人头痛的问题,因为swifts字符串不断变化,而且许多文档已经过时且无用 String有子字符串(from:Index),但它不能接受整数(这种情况已经存在一段时间了),所以我计划使用startIndex并将其提升1,但现在Index没有advanceBy方法,所以我不能这样做: let aString = "hello" let subString = aString.substring(from: aStrin
let aString = "hello"
let subString = aString.substring(from: aString.startIndex.advanceBy(1))
如何从索引1中获取子字符串?如今,如何推进索引?子字符串(从索引)方法的要点是什么?您应该如何使用它?看起来非常清楚,因为第一项是: 最明显的变化是索引不再具有
后继者()
、前辈()
、advancedBy(:)
、advancedBy(::limit:)
)或距离(:)
方法。相反,这些操作被移动到集合中,该集合现在负责递增和递减其索引
myIndex.successor() => myCollection.index(after: myIndex)
myIndex.predecessor() => myCollection.index(before: myIndex)
myIndex.advance(by: …) => myCollection.index(myIndex, offsetBy: …)
看起来你想要的是:
let greeting = "hello"
let secondCharIndex = greeting.index(after: greeting.startIndex)
let enryTheEighthGreeting = greeting.substring(from: secondCharIndex) // -> "ello"
(还请注意,如果您想要收集
功能,如字符串
上的索引管理,有时使用其视图会有所帮助。字符串
方法,如开始索引
和索引(之后:)
只是转发到字符
视图的便利。虽然在Swift 2 IIRC中,…字符串
s本身不再是集合
s,但这部分并不是新的。)
有关集合索引的更多信息,请参见。Swift 3:
不太详细的解决方案:
let index:Int = 1
let str = "hello"
print(str.substring(from:str.idx(index)))//ello
extension String{
func idx(_ index:Int) -> String.Index{
return self.index(self.startIndex, offsetBy: index)
}
}
我对斯威夫特的字符串模型也很厌倦,所以我写了自己的扩展。请看我的回答:@Leo Dabus。链接中接受的答案具有startIndex.advancedBy()。但正如我所指出的,advanceBy在10.6版中已经不存在了。公认的答案已经过时了。你可以试试我发布的beta 2版可能与beta 6版兼容
let index:Int = 1
let str = "hello"
print(str.substring(from:str.idx(index)))//ello
extension String{
func idx(_ index:Int) -> String.Index{
return self.index(self.startIndex, offsetBy: index)
}
}