如何将 Int 数组转换为字符串? Swift 中的数组
Posted
技术标签:
【中文标题】如何将 Int 数组转换为字符串? Swift 中的数组【英文标题】:How can I convert an Int array into a String? array in Swift 【发布时间】:2015-09-09 07:44:51 【问题描述】:我有一个如下所示的数组:
var arr: [Int] = [1,2,3,4,5]
为了打印这个,我想把它转换成:
var newArr: [String?] = ["1","2","3","4","5"]
我该如何解决这个问题?
【问题讨论】:
arr.map String($0)
。如果您真的希望字符串是可选的,arr.map Optional(String($0))
我应该输入类似:var newArr = arr.map Optional(String($0)) 的内容吗? @AirspeedVelocity
是的。但是,重读,不太清楚你想要什么……当您说“为了打印这个”时,您是什么意思?
【参考方案1】:
空速速度给你答案:
var arr: [Int] = [1,2,3,4,5]
var stringArray = arr.map String($0)
或者,如果您希望您的 stringArray 的类型为 [String?]
var stringArray = arr.map Optional(String($0))
这种形式的 map 语句是 Array 类型的方法。它对数组中的每个元素执行您提供的闭包,并将所有这些调用的结果组合到一个新数组中。它将一个数组映射到一个结果数组。 您传入的闭包应返回输出数组中对象类型的对象。
我们可以把它写成更长的形式:
var stringArray = arr.map
(number: Int) -> String in
return String(number)
编辑:
如果您只需要将 int 值安装到自定义表格视图单元格中,您可能应该将数组保留为 int 并在 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($0)
【讨论】:
【参考方案2】:更新:Swift 5
您可以使用以下代码:
var arr: [Int] = [1,2,3,4,5]
let stringArray = arr.map(String.init)
输出:
["1", "2", "3", "4", "5"]
【讨论】:
【参考方案3】:你应该使用
cell.textLabel?.text = "\(arr[indexPath.row])"
为了将标签中的值显示为字符串。
【讨论】:
Qustion 不是这样的,不是吗【参考方案4】:使用以下代码就地完成:
Array(0...100).map String($0)
【讨论】:
【参考方案5】:像这样声明你的整数数组:
let integerArray = [1 , 2 ,4 ,5]
像这样打印你的类型转换数组:
print(integerArray.map String($0) )
您可以尝试转换为任何数据类型,如 Float 、 Double 、 Int8 等,这里 map 将从数组中获取每个元素并更改为提到的数据类型并将其分配回您的数组。
【讨论】:
【参考方案6】:如果您正在寻找类似 Python 的 .join()
、Perl 的 join()
、php 的 implode()
,您可以使用 .joined(separator: String)
——但只能在字符串值列表中使用。
所以您仍然需要如上所示的.map
来进行转换,但是一旦完成,它看起来更像您习惯的:
let stringifiedNumberList = numberList
.map String($0)
.joined(separator: ", ")
如果你想变得花哨……
您可以做的一件很酷的事情是在输出的最后一个元素之前添加“and”或“or”,利用已经存在的.map
来提供牛津逗号分隔的列表。 .enumerated()
方法可以帮助您为地图迭代的每个元素提供一个索引:
let stringifiedNumberList = numberList
.enumerated()
.map
if $0.0 == (numberList.count - 1)
return "and " + String($0.1)
else
return String($0.1)
.joined(separator: ", ")
【讨论】:
以上是关于如何将 Int 数组转换为字符串? Swift 中的数组的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Swift 将 Int of Array 值转换为 Double [关闭]