5

Like the question says, if I have:

XQQ230IJFEKJLDSAIOUOIDSAUIFOPDSFE28

How can I split this string at every 8th character to get:

XQQ230IJ FEKJLDSA IOUOIDSA UIFOPDSA
p3scobar
  • 131
  • 2
  • 6
  • 1
    I'm not sure why you marked this as a duplicate, when the answer I procured here is better than the jibberish answers in the post you referenced. You're just making Stack Overflow annoying to use. – p3scobar May 02 '18 at 22:07

1 Answers1

9

Implement this function

extension String {
    func inserting(separator: String, every n: Int) -> String {
        var result: String = ""
        let characters = Array(self.characters)
        stride(from: 0, to: characters.count, by: n).forEach {
            result += String(characters[$0..<min($0+n, characters.count)])
            if $0+n < characters.count {
                result += separator
            }
        }
        return result
    }
}

call it this way,

let str = "XQQ230IJFEKJLDSAIOUOIDSAUIFOPDSFE28"
let final = str.inserting(separator: " ", every: 8)
print(final)

Output will be like this,

XQQ230IJ FEKJLDSA IOUOIDSA UIFOPDSF E28

This will be generic solution if you want to add any character instead of space, it will work.

PPL
  • 6,357
  • 1
  • 11
  • 30
  • No longer works in Swift 5 unfortunately. – meaning-matters Mar 09 '20 at 20:10
  • Here's the Swift 5 version: ```extension String {func inserting(separator: String, every n: Int) -> String { var result: String = "" let characters = Array(self) stride(from: 0, to: characters.count, by: n).forEach { result += String(characters[$0.. – Malcolm Murray May 18 '21 at 13:55