感谢您的帮助-刚开始时,请想象这里的逻辑存在一些严重问题。

在给定输入的情况下,尝试编写程序,如果在字典中找到该输入的字母,则用相应的值替换该字母。

真的卡在了我要去的地方。任何人都可以帮助/建议可行的替代逻辑吗?

var leetDic = ["A" : "4",
               "B" : "6",
               "E" : "3",
               "I" : "1",
               "L" : "1",
               "M" : "(V)",
               "N" : "(/)",
               "O" : "0",
               "S" : "5",
               "T" : "7",
               "V" : "(/",
               "W" : "`//]"]


func leetConverter(leet: String) {

    var leet1 = leet.uppercased()

    for i in leet1.characters {

        if i == leetDic.keys { //ERROR "Binary operator cannot be applied to operands of type Character and dictionary"

            i = leetDic.values // ERROR "cannot assign value 'i' is a let constant"
        } else {

            return i
        }
    }


}

var test = leetConverter(leet: "Hello World")

最佳答案

问题是您正在比较字符和数组,也可以循环给i赋值,因为它是常量,您可以像这样进行操作。

func leetConverter(leet: String) -> String {
    var leet1 = leet.uppercased()
    var newString = String()
    for ch in leet1.characters {
        let str = String(ch)
        if let value = leetDic[str] {
            newString.append(value)
        } else {
            newString.append(str)
        }
    }
    return newString
}


更快捷的方式

func leetConverter(leet: String) -> String {
    let str = leet.characters.map { leetDic[String($0).uppercased()] ?? String($0) }.joined()
    return str
}

关于swift - 初学者Swift:如果字典中的字母转换字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43694617/

10-11 02:21
查看更多