Reputation: 1211
I try to create an iterator for string processing in swift that will return every time the next chracter. But with no luck. (The final goal is to write a parser for a custom scripting language)
All methods that I found on the net involve some for loop on a range, that accesses the characters of the string, one at a time. But I rather need methods like hasNext () and getNextChar (), that other functions would call..
What is the most effective way to write an iterator class like that in swift? Is there maybe some class in swift that implements that feature already, and so, I dont have to write an iterator in the first place?
Upvotes: 1
Views: 1264
Reputation: 154603
Call makeIterator()
on the String
which returns a String.Iterator
. You can call next()
on it to get the next character. It returns nil
when there are no more characters.
let myString = "abcde"
// var iter = myString.characters.makeIterator() // Swift 3
var iter = myString.makeIterator() // Swift 4 and 5
while let c = iter.next() {
print(c)
}
Output:
a b c d e
Upvotes: 2