如何将字符串拆分为Int:String Dictionary

时间:2017-10-26 20:37:01

标签: swift split

所以我试图分割一个看起来像这样的字符串:

let Ingredients = "1:egg,4:cheese,2:flour,50:sugar"

我试图获得像这样的字典输出

var decipheredIngredients : [Int:String] = [

1 : "egg",
4 : "cheese",
2 : "flour",
50 : "sugar"

]

以下是我使用

尝试此操作的代码
func decipherIngredients(input: String) -> [String:Int]{
    let splitStringArray = input.split(separator: ",")
    var decipheredIngredients : [String:Int] = [:]
    for _ in splitStringArray {
        decipheredIngredients.append(splitStringArray.split(separator: ":"))
    }

    return decipheredIngredients
}

当我尝试这个时,我得到一个错误,说我无法附加到字典中。我尝试过这样的其他方法:

func decipherIngredients(input: String) -> [String.SubSequence]{
    let splitStringArray = input.split(separator: ",")
    return splitStringArray
}

let newThing = decipherIngredients(input: "1:egg,4:cheese,2:flour,50:sugar").split(separator: ":")
print(newThing)

但是我把它作为函数的输出

[ArraySlice(["1:egg", "4:cheese", "2:flour", "50:sugar"])]

2 个答案:

答案 0 :(得分:6)

使用 Swift 4 和函数式编程的替代方法:

let ingredients = "1:egg,4:cheese,2:flour,50:sugar"

let decipheredIngredients = ingredients.split(separator: ",").reduce(into: [Int: String]()) {
  let ingredient = $1.split(separator: ":")

  if let first = ingredient.first, let key = Int(first), let value = ingredient.last {
    $0[key] = String(value)
  }
}

print(decipheredIngredients)

答案 1 :(得分:1)

Swift 3

尝试此操作,假设您需要Int类型的字典键和String类型的值

func decipherIngredients(_ input: String) -> [Int:String] {

    var decipheredIngredients : [Int:String] = [:]

    let keyValueArray = input.components(separatedBy: ",")

    for keyValue in keyValueArray {
        let components = keyValue.components(separatedBy: ":")
        decipheredIngredients[Int(components[0])!] = components[1]
    }

    return decipheredIngredients

}