如何将 Int 数组转换为 String? Swift 中的数组

How can I convert an Int array into a String? array in Swift

我有一个如下所示的数组:

var arr: [Int] = [1,2,3,4,5]

为了打印这个,我想把它转换成:

var newArr: [String?] = ["1","2","3","4","5"]

我该如何解决这个问题?

Airspeed Velocity给了你答案:

var arr: [Int] = [1,2,3,4,5]

var stringArray = arr.map { String([=10=]) }

或者如果您希望 stringArray 的类型为 [String?]

var stringArray = arr.map  { Optional(String([=11=])) }

这种形式的map语句是Array类型的方法。它对数组中的每个元素执行您提供的闭包,并将所有这些调用的结果组装到一个新数组中。它将一个数组映射到结果数组。 您传入的闭包应该 return 是输出数组中对象类型的对象。

我们可以写成更长的形式:

var stringArray = arr.map {
  (number: Int) -> String in
  return String(number)
}

编辑:

如果您只需要将 int 值安装到自定义 table 视图单元格中,您可能应该将数组保留为 ints,而只需将值安装到 cellForRowAtIndexPath 方法中的单元格中。

func tableView(tableView: UITableView, 
  cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
  let cell = tableView.dequeueReusableCellWithIdentifier("cell", 
    forIndexPath: indexPath) as! MyCustomCellType
  cell.textLabel?.text = "\(arr[indexPath.row])"
  return cell
}

编辑#2:

如果您只想打印数组,最好将其保留为 Int 对象数组,然后简单地打印它们:

arr.forEach { print([=14=]) }

你应该使用

 cell.textLabel?.text = "\(arr[indexPath.row])"

为了将标签中的值显示为字符串。

使用以下代码就地完成:

Array(0...100).map { String([=10=]) }

更新:Swift 5

您可以使用以下代码完成此操作:

var arr: [Int] = [1,2,3,4,5]
let stringArray = arr.map(String.init)

输出:

["1", "2", "3", "4", "5"]

像这样声明整数数组:

let integerArray = [1 , 2 ,4 ,5]

像这样打印你的类型转换数组:

print(integerArray.map { String([=11=]) })

您可以尝试转换为任何数据类型,如 Float、Double、Int8 等,这里 map 将从数组中获取每个元素并更改为提到的数据类型并将其分配回您的数组。

如果您正在寻找类似 Python 的 .join()、Perl 的 join()、PHP 的 implode() 之类的方法,您可以使用 .joined(separator: String) -- 但仅限于字符串值列表。

因此您仍然需要如上所示的 .map 来进行转换,但是一旦完成,它看起来更像您习惯的方式:

    let stringifiedNumberList = numberList
        .map { String([=10=]) }
        .joined(separator: ", ")

如果你想变漂亮...

您可以做的一件很酷的事情是在输出的最后一个元素之前添加“and”或“or”,以提供牛津逗号分隔列表,方法是利用已经存在的 .map.enumerated() 方法可以通过为地图遍历的每个元素提供索引来提供帮助:

    let stringifiedNumberList = numberList
        .enumerated()
        .map {
            if [=11=].0 == (numberList.count - 1) {
                return "and " + String([=11=].1)
            } else {
                return String([=11=].1)
            }
        }
        .joined(separator: ", ")