![](/img/trans.png)
[英]How to convert Range Int Array to String Array in Swift efficiently?
[英]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"]
我怎么解決這個問題?
空速速度給你答案:
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 值安裝到自定義表視圖單元格中,您可能應該將數組保留為 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
}
如果您只想打印數組,最好將其保留為 Int 對象數組,然后簡單地打印它們:
arr.forEach { print($0) }
更新:斯威夫特 5
您可以使用以下代碼執行此操作:
var arr: [Int] = [1,2,3,4,5]
let stringArray = arr.map(String.init)
輸出:
["1", "2", "3", "4", "5"]
你應該使用
cell.textLabel?.text = "\(arr[indexPath.row])"
以便將標簽中的值顯示為字符串。
使用以下代碼就地執行此操作:
Array(0...100).map { String($0) }
像這樣聲明你的整數數組:
let integerArray = [1 , 2 ,4 ,5]
像這樣打印你的類型轉換數組:
print(integerArray.map { String($0) })
您可以嘗試將類型轉換為任何數據類型,如 Float 、 Double 、 Int8 等,這里 map 將從數組中獲取每個元素並更改為提到的數據類型並將其分配回您的數組。
如果您正在尋找諸如 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: ", ")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.