我有一个包含二进制数字的字符串。如何将其分成几对数字?
假设字符串是:
let x = "11231245"
我想在每2个字符后添加一个分隔符,例如“:”(即冒号)。
我希望输出为:
"11:23:12:45"
我怎么能在Swift中做到这一点?
Swift 5.1•Xcode 11或更高版本
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 Collection { func distance(to index: Index) -> Int { distance(from: startIndex, to: index) } }
extension StringProtocol where Self: RangeReplaceableCollection { mutating func insert<S: StringProtocol>(separator: S, every n: Int) { for index in indices.dropFirst().reversed() where distance(to: index).isMultiple(of: n) { insert(contentsOf: separator, at: index) } } func inserting<S: StringProtocol>(separator: S, every n: Int) -> Self { var string = self string.insert(separator: separator, every: n) return string } }
测试中
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"