import Foundation var str: String = "0123456789" let start = str.index(str.startIndex,offsetBy: 3); let str1 = str.substring(from: start) print(str1) //3456789 let end = str.index(str.endindex,offsetBy: -3) let str2 = str.substring(to: end) print(str2) //0123456 let range = Range<String.Index>(uncheckedBounds: (lower: start,upper: end)) let str3 = str.substring(with: range) print(str3) //3456 extension String { subscript(r: Range<Int>) -> String { get { let startIndex = self.index(self.startIndex,offsetBy: r.lowerBound); let endindex = self.index(self.startIndex,offsetBy: r.upperBound) return self.substring(with: Range(startIndex..<endindex)) } set { let startIndex = self.index(self.startIndex,offsetBy: r.upperBound) self.replaceSubrange(Range(startIndex..<endindex),with: newValue) } } } let i = 3 let j = 7 print(str[i..<j]) //3456 str[1..<3] = "aaa" print(str) //0aaa3456789