加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在分配值时使用Swift循环整个字母表?

发布时间:2020-12-14 05:32:42 所属栏目:百科 来源:网络整理
导读:我试图使用 Swift在整个字母表中循环.唯一的问题是我想为每个字母赋值. 例如:a = 1,b = 2,c = 3,依此类推,直到我得到z = 26. 如何使用用户键入的文本字段中的每个字母,同时使用先前分配给字母表中字母的值? 完成此操作后,如何将所有字母值相加以获得整个单
我试图使用 Swift在整个字母表中循环.唯一的问题是我想为每个字母赋值.

例如:a = 1,b = 2,c = 3,依此类推,直到我得到z = 26.

如何使用用户键入的文本字段中的每个字母,同时使用先前分配给字母表中字母的值?

完成此操作后,如何将所有字母值相加以获得整个单词的总和.我正在寻找最简单的方法来完成这个,但按照我希望的方式工作.

有什么建议么?

提前致谢.

编辑/更新: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

    }

}

扩展

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
    }
}
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读