【问题标题】:Swift: Turn array into String [duplicate]Swift:将数组转换为字符串 [重复]
【发布时间】:2017-10-09 10:31:05
【问题描述】:

如何将数组(例如[Int])转换为字符串,在元素之间保留逗号?如果我有一个像[1,2,3,4] 这样的数组,我想接收一个像"1, 2, 3, 4" 这样的字符串。

【问题讨论】:

    标签: ios swift cocoa-touch foundation


    【解决方案1】:

    您只需将整数映射为字符串并使用分隔符", " 连接它们

    let array = [1,2,3,4]
    let string = array.map(String.init).joined(separator: ", ")   //  "1, 2, 3, 4"
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      let string = array.map { String($0) }
          .joined(separator: ", ")
      

      map 调用将数字数组转换为字符串数组,joined 将它们组合成一个字符串,在各个字符串之间使用您想要的任何分隔符。

      或者,如果要在 UI 中显示,数字可能需要小数点和/或千位分隔符,那么最好使用 NumberFormatter 以本地化格式显示结果:

      let array = [1.0, 1.1, 1.2, 1.3]
      let formatter = NumberFormatter()
      formatter.numberStyle = .decimal
      formatter.maximumFractionDigits = 2
      formatter.minimumFractionDigits = 2
      
      let string = array.compactMap { formatter.string(for: $0) }
          .joined(separator: ", ")
      

      对于美国用户而言,这将导致:

      1.00、1.10、1.20、1.30

      但对于德国用户,它会导致:

      1,00, 1,10, 1,20, 1,30

      如果您希望在 iOS 13+ 和/或 macOS 10.15+ 中将其很好地呈现为“A、B 和 C”,您可以使用 ListFormatter

      let array = [1.0, 1.1, 1.2, 1.3]
      let formatter = NumberFormatter()
      formatter.numberStyle = .decimal
      formatter.maximumFractionDigits = 2
      formatter.minimumFractionDigits = 2
      
      let strings = array.compactMap { formatter.string(for: $0) }
      if let result = ListFormatter().string(from: strings) {
          print(result)
      }
      

      导致:

      1.00、1.10、1.20 和 1.30

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-30
        • 2014-11-13
        • 1970-01-01
        • 2013-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多