例如,我有一个Int
数组:
let digits = [Int](0...9)
我可以将其转换为字符数组:["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
吗?
Swift没有隐式转换类型,所以这不起作用:
let digits: Array<Character> = [Int](0...9)
注意:只有0-9个有效数字可以是未分类的。
答案 0 :(得分:3)
func convertArray(array: [Int]) -> [Character] {
return array.map {
Character(String($0))
}
}
答案 1 :(得分:2)
试试这个:
Array(0...9).map({String($0)}).map({ Character($0) })
在上面的代码中,我们从Int
获取每个[Int]
,使用String构造函数/初始化程序将其转换为String
(按顺序我们一旦第一个操作结束,我们正在使用字符串初始值设定项(一个带有内容并返回字符串的函数)到[Int]
使用map
更高阶函数) '得到[String]
,第二个操作使用这个新的[String]
并将其转换为[Character]
。
如果您想阅读有关字符串访问here的更多信息。
@LeoDabus建议如下:
Array(0...9).map(String.init).map(Character.init) //<-- no need for closure
或者不像我们之前那样进行两次操作,只需一次迭代就可以完成。
Array(0...9).map({Character("\($0)")})
@Alexander提出以下
Array((0...9).lazy.map{ String($0) }.map{ Character($0) })
(0...9).map{ Character(String($0)) } //<-- where you don't need an array, you'd use your range right away
答案 2 :(得分:1)
试试这个
var arrChars = [string]()
for i in 0..<digits.count
{
let item = digits[i]
arrChars.append("\(item)")
}
答案 3 :(得分:0)
只需使用map
功能:
let stringArray = digits.map{String($0)}
答案 4 :(得分:0)
一种可能的方法是从Ascii代码创建Character
。
let charArrFromAscii = Array(48...57).map({ Character(UnicodeScalar($0)) })
另一种方法是将Int
值映射到Character
。
let charArrFromInt = Array(0...9).map({ Character("\($0)") })