如果前进的距离太大,则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
是一些不安全的用户输入,该怎么办?如何验证按指定距离推进索引不会导致崩溃?
答案 0 :(得分:5)
您可以使用方法advancedBy(n:Self.Distance,limit:Self)并将inputString endIndex设置为限制:
let newIndex = index.advancedBy(distance, limit: inputString.endIndex)