@@ -7,20 +7,20 @@ extension String {
7
7
assert ( patternLength <= self . characters. count)
8
8
9
9
var skipTable = [ Character: Int] ( )
10
- for (i, c) in pattern. characters. enumerate ( ) {
10
+ for (i, c) in pattern. characters. enumerated ( ) {
11
11
skipTable [ c] = patternLength - i - 1
12
12
}
13
13
14
- let p = pattern. endIndex . predecessor ( )
14
+ let p = pattern. index ( before : endIndex )
15
15
let lastChar = pattern [ p]
16
- var i = self . startIndex . advancedBy ( patternLength - 1 )
16
+ var i = self . index ( startIndex , offsetBy : patternLength - 1 )
17
17
18
18
func backwards( ) -> String . Index ? {
19
19
var q = p
20
20
var j = i
21
21
while q > pattern. startIndex {
22
- j = j . predecessor ( )
23
- q = q . predecessor ( )
22
+ j = index ( before : j )
23
+ q = index ( before : q )
24
24
if self [ j] != pattern [ q] { return nil }
25
25
}
26
26
return j
@@ -30,9 +30,9 @@ extension String {
30
30
let c = self [ i]
31
31
if c == lastChar {
32
32
if let k = backwards ( ) { return k }
33
- i = i . successor ( )
33
+ i = index ( after : i )
34
34
} else {
35
- i = i . advancedBy ( skipTable [ c] ?? patternLength)
35
+ i = index ( i , offsetBy : skipTable [ c] ?? patternLength)
36
36
}
37
37
}
38
38
return nil
@@ -44,7 +44,7 @@ extension String {
44
44
// A few simple tests
45
45
46
46
let s = " Hello, World "
47
- s. indexOf ( " World " ) // 7
47
+ s. indexOf ( pattern : " World " ) // 7
48
48
49
49
let animals = " 🐶🐔🐷🐮🐱 "
50
- animals. indexOf ( " 🐮 " ) // 6
50
+ animals. indexOf ( pattern : " 🐮 " ) // 6
0 commit comments