Skip to content

Instantly share code, notes, and snippets.

@alexkent
Created April 25, 2016 06:52
Show Gist options
  • Save alexkent/af8794e0a1032bddf7e8d67fd530054a to your computer and use it in GitHub Desktop.
Save alexkent/af8794e0a1032bddf7e8d67fd530054a to your computer and use it in GitHub Desktop.
import Foundation
let string = "e5cfb500"
for var index = string.startIndex; index < string.endIndex; index = index.advancedBy(2) {
let rangeOfCharacterPair = Range<String.Index>(index..<index.advancedBy(2))
let characterPair = string.substringWithRange(rangeOfCharacterPair)
print(characterPair)
}
@stefanlindbohm
Copy link

What about this? Ranges and maps are GREAT :). Also, this uses Swift's String subscript instead of substringWithRange dropping the need for Foundation.

let string = "e5cfb500"

let pairsCount = string.characters.count / 2
let pairs = (0..<pairsCount).map { pairNumber -> String in
    let pairStartPosition = string.startIndex.advancedBy(pairNumber * 2)
    return string[pairStartPosition...pairStartPosition.advancedBy(1)]
}

for pair in pairs {
    print(pair)
}

@stefanlindbohm
Copy link

Wait a second, I didn't see @paoloboschini's comment using stride. That's clever! How about this even?

let string = "e5cfb500"

let pairs = 0.stride(to: string.characters.count, by: 2).map { pairStartPosition -> String in
    return string[string.startIndex.advancedBy(pairStartPosition)...string.startIndex.advancedBy(pairStartPosition + 1)]
}

for pair in pairs {
    print(pair)
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment