Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typealias Counters = (characters: Int, words: Int, lines: Int)
- func count(input: String) -> Counters {
- let isWhitespace = { (character: Unicode.Scalar) in CharacterSet.whitespaces.contains(character) }
- let isNewline = { (character: Unicode.Scalar) in CharacterSet.newlines.contains(character) }
- let isAlphanumeric = { (character: Unicode.Scalar) in CharacterSet.alphanumerics.contains(character) }
- var counters = Counters(0, 0, 0)
- var isTrackingWord = false
- var isTrackingLine = false
- for c in input.unicodeScalars {
- counters.characters += 1
- if isWhitespace(c) && isTrackingWord {
- counters.words += 1
- } else if isNewline(c) && isTrackingLine {
- counters.lines += 1
- } else if isAlphanumeric(c) {
- isTrackingLine = true
- isTrackingWord = true
- }
- }
- return counters
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement