如何每隔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

回到顶部