Swift 4.2 โข Xcode 10
extension Collection { var pairs: [SubSequence] { var startIndex = self.startIndex let count = self.count let n = count/2 + count % 2 return (0..<n).map { _ in let endIndex = index(startIndex, offsetBy: 2, limitedBy: self.endIndex) ?? self.endIndex defer { startIndex = endIndex } return self[startIndex..<endIndex] } } }
extension StringProtocol where Self: RangeReplaceableCollection { mutating func insert(separator: Self, every n: Int) { for index in indices.reversed() where index != startIndex && distance(from: startIndex, to: index) % n == 0 { insert(contentsOf: separator, at: index) } } func inserting(separator: Self, every n: Int) -> Self { var string = self string.insert(separator: separator, every: n) return string } }
testing
let str = "112312451" let final = str.pairs.joined(separator: ":") print(final) // "11:23:12:45:1" let final2 = str.inserting(separator: ":", every: 2) print(final2) // "11:23:12:45:1\n" var str2 = "112312451" str2.insert(separator: ":", every: 2) print(str2) // "11:23:12:45:1\n" var str3 = "112312451" str3.insert(separator: ":", every: 3) print(str3) // "112:312:451\n" var str4 = "112312451" str4.insert(separator: ":", every: 4) print(str4) // "1123:1245:1\n"
Leo Dabus Dec 24 '15 at 15:02 2015-12-24 15:02
source share