我怎么能确定调用`String.Index.advancedBy`不会导致崩溃?

时间:2016-05-08 17:40:44

标签: string swift

如果前进的距离太大,则advancedBy上的String.CharacterView.Index调用EXC_BAD_ACCESS会导致let inputString = "Hello, world!" let index = inputString.startIndex let distance = 100 let newIndex = index.advancedBy(distance) // fatal error: cannot increment endIndex 。这可以在这里看到:

index

现在,如果startIndex已经从字符串distance提前了一些未知的次数,并且In [10]: df Out[10]: a b c 0 1 4 2 1 2 2 4 2 3 4 0 3 0 2 3 4 3 0 4 In [11]: df.loc[lambda df: df.a == 3] Out[11]: a b c 2 3 4 0 4 3 0 4 是一些不安全的用户输入,该怎么办?如何验证按指定距离推进索引不会导致崩溃?

1 个答案:

答案 0 :(得分:5)

您可以使用方法advancedBy(n:Self.Distance,limit:Self)并将inputString endIndex设置为限制:

let newIndex = index.advancedBy(distance, limit: inputString.endIndex)