如何每隔N个字符迅速在字符串中添加分隔符?
我有一个包含二进制数字的字符串。如何将其分成几对数字?
假设字符串是:
let x = "11231245"
我想在每2个字符后添加一个分隔符,例如“:”(即冒号)。
我希望输出为:
"11:23:12:45"
我怎么能在Swift中做到这一点?
回答:
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"
以上是 如何每隔N个字符迅速在字符串中添加分隔符? 的全部内容, 来源链接: utcz.com/qa/409785.html