Beginner Swift:如果字典中的字母转换字符串 [英] Beginner Swift: Converting string if letter in dictionary

查看:122
本文介绍了Beginner Swift:如果字典中的字母转换字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



尝试编写一个程序,给定一个输入,如果在字典中找到来自该输入的字母,则用相应的值替换该字母。 b
$ b

真的卡在我出错的地方。任何人都可以帮助/建议一种可行的替代逻辑?

  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 if i == leetDic.keys {//错误二进制运算符不能应用于字符和字典类型的操作数

i = leetDic.values //错误无法赋值'i'是一个常量
} else {

return
}
}


}

var test = leetConverter(leet:Hello World)


解决方案

问题是你正在比较字符和数组,在循环中,因为它是不变的,你可以像这样去。

  func leetConverter(leet:String) - >字符串{
var leet1 = leet.uppercased()
var newString = String()
for ch in leet1.characters {
let str = String(ch)
如果让value = leetDic [str] {
newString.append(value)
} else {
newString.append(str)
}
}
返回newString
}

更快捷的方式

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


Thanks for your help - just starting out so imagine there's some serious issues with my logic here.

Trying to write a program, given an input, if a letter from that input is found in a dictionary, replace the letter with the corresponding value.

Really stuck where I'm going wrong. Anyone able to help / suggest an alternative logic that may work?

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")

解决方案

Problem is you are comparing character and array also you can assign value to i in loop because it is constant you can go like this way.

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
}

More Swifty way

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

这篇关于Beginner Swift:如果字典中的字母转换字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆