Swift 打印时如何将数组拆分为指定行?

Swift 打印时如何将数组拆分为指定行?,swift,xcode,dictionary,Swift,Xcode,Dictionary,对于软件开发来说,我是新手,我正在阅读Big-Nerd Ranch的书《快速编程》。这本书提出的挑战之一是在包含15个邮政编码的字典中打印一个数组,并将它们分成三行,每组五个。格式必须完全匹配它在书中的显示方式 我已经尝试使用书中所教的信息,在开发人员文档的帮助下解决这个问题 没有骰子 这是我需要打印的内容: Caterham has the following zip codes: [111, 111, 111, 111, 111,

对于软件开发来说,我是新手,我正在阅读Big-Nerd Ranch的书《快速编程》。这本书提出的挑战之一是在包含15个邮政编码的字典中打印一个数组,并将它们分成三行,每组五个。格式必须完全匹配它在书中的显示方式

我已经尝试使用书中所教的信息,在开发人员文档的帮助下解决这个问题

没有骰子

这是我需要打印的内容:

Caterham has the following zip codes: [111, 111, 111, 111, 111,
                                       222, 222, 222, 222, 222,
                                       333, 333, 333, 333, 333]
然而这是我能得到的最接近的

var areaCodes = ["Caterham": [111, 111, 111, 111, 111], "Coulsdon": [222, 222, 222, 222, 222], "Purley": [333, 333, 333, 333, 333]]

var caterhamCodes : [Int] = []

for (_, values) in areaCodes {
    caterhamCodes += values
}

print("Caterham has the following codes: \(caterhamCodes[0...4]),")
print("                                  \(caterhamCodes[5...9]),")
print("                                  \(caterhamCodes[10...14]).")
其中打印:

Caterham has the following postcodes: [111, 111, 111, 111, 111],
                                      [222, 222, 222, 222, 222],
                                      [333, 333, 333, 333, 333].
基本上,每次打印一块邮政编码后,我都需要上面的内容减去一些方括号,而不需要标点符号。这本书指定我可能需要使用一个名为terminator的参数。它还提到我可能需要学习如何在字符串文本中表示特殊字符


我很感激这可能是一个高层次的问题,答案很简单,但我只学了几个星期,所以我希望我至少问了几个愚蠢的问题,我能被原谅

以下是获得所需输出的方法:

let intro = "Caterham has the following zip codes: ["
let spaces = ",\n" + String(repeating: " ", count: intro.count)

let areaCodes = ["Caterham": [111, 111, 111, 111, 111], "Coulsdon": [222, 222, 222, 222, 222], "Purley": [333, 333, 333, 333, 333]]

let codes = areaCodes.values.sorted { $0[0] < $1[0] }

var output = intro +
    codes.map { $0.map{ String($0) }.joined(separator: ", ") }
    .joined(separator: spaces)
    + "]"

print(output)

欢迎来到开发者社区,祝您在这里过得愉快! 我试图让答案尽可能简单,所以我的尝试如下:

var areaCodes = ["Caterham": [111, 111, 111, 111, 111],
                 "Coulsdon": [222, 222, 222, 222, 222],
                 "Purley": [333, 333, 333, 333, 333]]
let codesArray = areaCodes.values.sorted(by: { $0[0] < $1[0] })
let caterhamString = "Caterham has the following zip codes: ["
var printString = caterhamString

for (index, area) in codesArray.enumerated() {
   for code in area {
      printString += "\(code), "
   }

   if index != codesArray.count - 1 {
      printString += "\n" + String(repeating: " ", count: caterhamString.count)
   }
}

print(printString.dropLast(2).appending("]"))
var areaCodes=[“Caterham”:[111111111111111],
“库尔斯顿”:[222222222222222222222],
“Purley”:[333333333333333333]]
让codesArray=areaCodes.values.sorted(按:{$0[0]<$1[0]})
让caterhamString=“Caterham具有以下邮政编码:[”
var printString=caterhamString
对于codesArray.enumerated()中的(索引,区域){
区域中的代码{
printString+=“\(代码),”
}
如果索引!=codesArray.count-1{
printString+=“\n”+字符串(重复:”,计数:caterhamString.count)
}
}
打印(printString.dropLast(2).追加(“]))

希望这有帮助!祝你好运

[222222222222222222222]
是否与
“库尔斯顿”
相关?如果您重新阅读Silver Challenge,则需要对字典中的所有值进行格式化,以避免溢出。。。
var areaCodes = ["Caterham": [111, 111, 111, 111, 111],
                 "Coulsdon": [222, 222, 222, 222, 222],
                 "Purley": [333, 333, 333, 333, 333]]
let codesArray = areaCodes.values.sorted(by: { $0[0] < $1[0] })
let caterhamString = "Caterham has the following zip codes: ["
var printString = caterhamString

for (index, area) in codesArray.enumerated() {
   for code in area {
      printString += "\(code), "
   }

   if index != codesArray.count - 1 {
      printString += "\n" + String(repeating: " ", count: caterhamString.count)
   }
}

print(printString.dropLast(2).appending("]"))