Create an extension for subscripting ranges in strings:
extension String {
subscript (i: Int) -> Character {
return self[self.startIndex.advancedBy(i)]
}
subscript (i: Int) -> String {
return String(self[i] as Character)
}
subscript (r: Range<Int>) -> String {
let start = startIndex.advancedBy(r.startIndex)
let end = start.advancedBy(r.endIndex - r.startIndex)
//return self[Range(start: start, end: end)] // Deprecated in Swift 2.x
return self[Range(start ..< end)] // Swift 3
}
}
Credit to aleclarson, the author of this answer.
Then, if you need to print the string in 16-character chunks, do something along the lines of:
var start = 0
var end = 15
while end < 512 {
print(yourString[start...end])
start += 16
end += 16
}
Though I'd recommending checking if the string is actually 512 characters long with yourString.characters.count
, or simply setting the maximum index to the character count of the string.