Swift:将字符串中的单独字符与字典中的值进行匹配

时间:2017-05-11 14:08:27

标签: arrays swift string dictionary

我希望匹配用户的不同字符'输入字典中的值。用户在文本字段中键入内容,然后将其转换为与他们刚输入的字母相关联的一组单词。 例如,如果有人键入" Hello",对于单词中的每个字母(在这种情况下为5),应该从字典中进行匹配,从而产生五个单词作为输出:单词中的每个字母一个"你好"

这是我的字典(为方便起见,它只包含字母表中的所有字母):

let dict:[String:String] = ["A":"Awesome",
                            "B":"Bravo",
                            "C":"Cool"]

inputFieldUITextField),我将文本转换为单个字符的数组:

let textString = inputField.text
let arrayOfString = Array(textString.characters)

我猜我需要使用for-in循环遍历我的字典,但我不知道如何处理这个问题。我应该使用阵列吗?甚至.characters来获取单个字母?

1 个答案:

答案 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: " ")