【问题标题】:Convert a binary string into an array of integers in swift 3在swift 3中将二进制字符串转换为整数数组
【发布时间】:2017-01-24 06:35:59
【问题描述】:

我尝试将字符串转换为数组,但显示错误

var boolean = "01101010101001010111"

我试图通过它不起作用的字符来溢出字符串并尝试将其转换为数组。

resultArray = [0,1,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,1,1]

我的代码尝试

boolean = "01101010101001010111"
let componentsArray =  boolean.components(separatedBy: .controlCharacters) 

resultArray = Array(componentsArray) as! [Int]

还有错误

错误:通用参数“无法推断元素”

【问题讨论】:

  • 您尝试了什么,遇到了什么错误?您期望字符串“0-X/1Y€????”的结果是什么?
  • 更新错误@MartinR
  • @Joe let resultArray = boolean.characters.flatMap{Int(String($0))}

标签: arrays swift string


【解决方案1】:

一种可能的解决方案(现已针对 Swift 4 及更高版本进行了更新):

let zeroOneString = "01101010101001010111"

let resultArray = zeroOneString.compactMap { char in
    char == "0" ? 0 : char == "1" ? 1 : nil
}

print(resultArray) // [0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1]

zeroOneString.compactMap 映射字符串中所有字符的序列。 闭包将“0”映射到0,将“1”映射到1。其他所有内容都映射到 nil 并被 compactMap 忽略。

【讨论】:

  • Swift 5 更新:let array = str.compactMap { $0 == "0" ? 0 : 1}
猜你喜欢
  • 2012-02-27
  • 1970-01-01
  • 2015-12-16
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-07
相关资源
最近更新 更多