Beginner Swift:如果字典中的字母转换字符串 [英] Beginner Swift: Converting string if letter in dictionary
本文介绍了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屋!
查看全文