How do I cycle through the entire alphabet with Swift while assigning values?

前端 未结 5 2144
臣服心动
臣服心动 2020-12-21 01:15

I am trying to cycle through the entire alphabet using Swift. The only problem is that I would like to assign values to each letter.

For Example: a = 1, b = 2, c =

5条回答
  •  执笔经年
    2020-12-21 01:31

    edit/update: Xcode 7.2.1 • Swift 2.1.1

    import UIKit
    
    class ViewController: UIViewController {
    
        @IBOutlet weak var strWordValue: UILabel!
        @IBOutlet weak var strInputField: UITextField!
    
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
        @IBAction func sumLettersAction(sender: AnyObject) {
            strWordValue.text = strInputField.text?.wordValue.description
    
        }
    
    }
    

    Extensions

    extension String {
        var letterValue: Int {
            return Array("abcdefghijklmnopqrstuvwxyz".characters).indexOf(Character(lowercaseString))?.successor() ?? 0
        }
        var wordValue: Int {
            var result = 0
            characters.forEach { result += String($0).letterValue }
            return result
        }
    }
    

    enter image description here

    func letterValue(letter: String) -> Int {
        return Array("abcdefghijklmnopqrstuvwxyz".characters).indexOf(Character(letter.lowercaseString))?.successor() ?? 0
    }
    
    func wordValue(word: String) -> Int {
        var result = 0
        word.characters.forEach { result += letterValue(String($0)) }
        return result
    }
    
    
    let aValue = letterValue("a")  // 1
    let bValue = letterValue("b")  // 2
    let cValue = letterValue("c")  // 3
    let zValue = letterValue("Z")  // 26
    
    let busterWordValue = wordValue("Buster") // 85
    let busterWordValueString = wordValue("Buster").description // "85"
    

    //

    extension Character {
        var lowercase: Character { return Character(String(self).lowercaseString) }
        var value: Int { return Array("abcdefghijklmnopqrstuvwxyz".characters).indexOf(lowercase)?.successor() ?? 0 }
    }
    extension String {
        var wordValue: Int { return Array(characters).map{ $0.value }.reduce(0){ $0 + $1 } }
    }
    
    "Abcde".wordValue    // 15
    

提交回复
热议问题