Advertisement
RD_

gellmark wordscount

RD_
Dec 13th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 0.90 KB | None | 0 0
  1. typealias Counters = (characters: Int, words: Int, lines: Int)
  2.  
  3. func count(input: String) -> Counters {
  4.     let isWhitespace = { (character: Unicode.Scalar) in CharacterSet.whitespaces.contains(character) }
  5.     let isNewline = { (character: Unicode.Scalar) in CharacterSet.newlines.contains(character) }
  6.     let isAlphanumeric = { (character: Unicode.Scalar) in CharacterSet.alphanumerics.contains(character) }
  7.    
  8.     var counters = Counters(0, 0, 0)
  9.  
  10.     var isTrackingWord = false
  11.     var isTrackingLine = false
  12.    
  13.     for c in input.unicodeScalars {
  14.         counters.characters += 1
  15.         if isWhitespace(c) && isTrackingWord {
  16.             counters.words += 1
  17.         } else if isNewline(c) && isTrackingLine {
  18.             counters.lines += 1
  19.         } else if isAlphanumeric(c) {
  20.             isTrackingLine = true
  21.             isTrackingWord = true
  22.         }
  23.     }
  24.    
  25.     return counters
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement