我希望匹配用户的不同字符'输入字典中的值。用户在文本字段中键入内容,然后将其转换为与他们刚输入的字母相关联的一组单词。 例如,如果有人键入" Hello",对于单词中的每个字母(在这种情况下为5),应该从字典中进行匹配,从而产生五个单词作为输出:单词中的每个字母一个"你好"
这是我的字典(为方便起见,它只包含字母表中的所有字母):
let dict:[String:String] = ["A":"Awesome",
"B":"Bravo",
"C":"Cool"]
从inputField
(UITextField
),我将文本转换为单个字符的数组:
let textString = inputField.text
let arrayOfString = Array(textString.characters)
我猜我需要使用for-in循环遍历我的字典,但我不知道如何处理这个问题。我应该使用阵列吗?甚至.characters
来获取单个字母?
答案 0 :(得分:1)
如果你假设单词的第一个字母应该是键,那么你可以通过在字符串数组中将字典构建为字符串来简化自己:
import Foundation
let words = [
"Awesome",
"Bravo",
"Cool"]
let dict = words.reduce([Character:String]()) { dict, word in
guard let c = word.lowercased().characters.first else { return dict }
var mutDict = dict
mutDict[c] = word
return mutDict
}
然后通过以与字典键相同的方式规范用户输入来查找单词(我在示例中小写),然后使用flat-map抛出任何不匹配。
let wordsMatchingUserInput = userInput.lowercased().characters.map { dict[$0] }.flatMap { $0 }
然后加入他们
let outputString = wordsMatchingUserInput.joined(separator: " ")