- If you want to use subscripts on Strings like
"palindrome"[1..<3]and"palindrome"[1...3], use these extensions.
Swift 4
extension String {
subscript (bounds: CountableClosedRange<Int>) -> String {
let start = index(startIndex, offsetBy: bounds.lowerBound)
let end = index(startIndex, offsetBy: bounds.upperBound)
return String(self[start...end])
}
subscript (bounds: CountableRange<Int>) -> String {
let start = index(startIndex, offsetBy: bounds.lowerBound)
let end = index(startIndex, offsetBy: bounds.upperBound)
return String(self[start..<end])
}
}
Swift 3
For Swift 3 replace with return self[start...end] and return self[start..<end].
- Apple didn’t build this into the Swift language because the definition of a ‘character’ depends on how the String is encoded. A character can be 8 to 64 bits, and the default is usually UTF-16. You can specify other String encodings in
String.Index.
This is the documentation that Xcode error refers to.
More on String encodings like UTF-8 and UTF-16