Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2015
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.98 KB | None | 0 0
  1. //
  2. //  Soundex.swift
  3. //  DriverLicense
  4. //
  5. //  Created by Kyle Smith on 11/21/15.
  6. //  Copyright © 2015 Kyle Smith. All rights reserved.
  7. //
  8.  
  9. import Foundation
  10.  
  11. class Soundex {
  12.     class func key(word: String) -> String {
  13.         let trimmedWord = word.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
  14.         var letterArray = [Character]()
  15.        
  16.         for character in trimmedWord.characters {
  17.             letterArray.append(character)
  18.         }
  19.         //let letterArray = Array(arrayLiteral: trimmedWord.uppercaseString)
  20.        
  21.         if (letterArray.count < 1) {
  22.             return ""
  23.         }
  24.        
  25.         var soundex:[Character] = Array()
  26.        
  27.         var lastCode: Character?
  28.         for (index, letter) in (letterArray.enumerate()) {
  29.             if (soundex.count >= 3) { break }
  30.            
  31.             var code: Character
  32.            
  33.             switch letter {
  34.             case "R":
  35.                 code = "6"
  36.             case "M", "N":
  37.                 code = "5"
  38.             case "L":
  39.                 code = "4"
  40.             case "T", "D":
  41.                 code = "3"
  42.             case "C", "S", "K", "G", "J", "Q", "X", "Z":
  43.                 code = "2"
  44.             case "B", "P", "F", "V":
  45.                 code = "1"
  46.             default:
  47.                 code = "0"
  48.             }
  49.            
  50.             if (index == 0) {
  51.                 lastCode = code
  52.                 continue
  53.             }
  54.            
  55.             if (code != "0" && code != lastCode) {
  56.                 soundex.append(code)
  57.                 lastCode = code
  58.             }
  59.         }
  60.        
  61.         while (soundex.count < 3) {
  62.             soundex.append("0")
  63.         }
  64.        
  65.         soundex.insert(letterArray.first!, atIndex: 0)
  66.        
  67.         return soundex.reduce("") { $0 + String($1) }
  68.     }
  69.    
  70.     class func word(word: String, soundsLike: String) -> Bool {
  71.         return self.key(word) == self.key(soundsLike)
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement