xcode – 如何在Swift中实现ROT13功能?
发布时间:2020-12-14 17:17:12 所属栏目:百科 来源:网络整理
导读:我想创建一个接收String并返回一个String的函数,并在字母表中用字母后面的字母替换一个字母13个字母(ROT13).我发现了很多例子,遗憾的是由于各种错误,我无法让它工作.例如这一个: var key = [String:String]() // EDITEDlet uppercase = Array(arrayLiteral:
我想创建一个接收String并返回一个String的函数,并在字母表中用字母后面的字母替换一个字母13个字母(ROT13).我发现了很多例子,遗憾的是由于各种错误,我无法让它工作.例如这一个:
var key = [String:String]() // EDITED let uppercase = Array(arrayLiteral: "ABCDEFGHIJKLMNOPQRSTUVWXYZ") let lowercase = Array(arrayLiteral: "abcdefghijklmnopqrstuvwxyz") for i in 0 ..< 26 { key[uppercase[i]] = uppercase[(i + 13) % 26] key[lowercase[i]] = lowercase[(i + 13) % 26] } func rot13(s: String) -> String { return String(map(s,{ key[$0] ?? $0 })) } 解决方法
实际上你最初的角色映射方法很好:
var key = [Character: Character]() 但是这两个数组必须是字符数组: let uppercase = Array("ABCDEFGHIJKLMNOPQRSTUVWXYZ".characters) let lowercase = Array("abcdefghijklmnopqrstuvwxyz".characters) (备注:您(几乎)从不想调用xxxLiteral:初始化程序 现在你填写字典的代码有效: for i in 0 ..< 26 { key[uppercase[i]] = uppercase[(i + 13) % 26] key[lowercase[i]] = lowercase[(i + 13) % 26] } 转换字符串可以完成 // map // String --> Characters ---> Characters -> String func rot13(s: String) -> String { return String(s.characters.map { key[$0] ?? $0 }) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |