Swift:如何将Int数组转换为Character数组?

时间:2017-12-24 21:50:29

标签: ios swift

例如,我有一个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个有效数字可以是未分类的。

5 个答案:

答案 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)") })