在Swift 3中将字符串转换为不带引号的数组

时间:2017-08-01 09:40:47

标签: arrays swift

我的问题:

This answer解释了如何将包含由空格分隔的元素的String转换为数组。

let numbers = "1 2 3 4"
let numbersArray = numbers.components(separatedBy: " ")
print(numbersArray)
// output: ["1", "2", "3", "4"]
// but I want: [1, 2, 3, 4]

但是,我正在尝试创建一个没有引号的数组,因为我正在创建一个数字数组,而不是字符串。

我的尝试:

我尝试删除numbersArray中的所有引号,但这不起作用,因为它是数组,而不是字符串。

numbersArray.replacingOccurrences(of: "\"", with: "") // won't work

我尝试了不同的东西:我尝试将数组中的每个元素添加到一个新数组中,希望新数组不包含引号。但是我收到了一个错误:

let numbers = "1 2 3 4" // string to be converted into array without quotes
let numbersArray = numbers.components(separatedBy: " ") // convert string into array with quotes
var newNumbersArray = [String]() // new blank array (which will be without quotes)
for i in numbersArray { // for each item in the array with quotes
  newNumbersArray += i // (hopefully) add the item in the new array without quotes
} 
print(newNumbersArray) // print the new array 

这给了我一个错误:

Swift:: Error: cannot convert value of type '[String]' to expected argument type 'inout String'
  newNumbersArray += i

3 个答案:

答案 0 :(得分:2)

您可以对调用[String]产生的components(separatedBy:)数组应用flatMap调用,并在{转换闭包的正文中应用可用的init(_:radix:) of Int {1}} invokation:

flatMap

答案 1 :(得分:1)

你可以试试这个:

    app:layout_anchor="@id/your_cover_id"
    app:layout_anchorGravity="bottom|center"

答案 2 :(得分:1)

Swift 3.0

试试这个..链接方法很容易。

let temp = "1 2 3 4 5 6"
var numbers: [Int] = []

temp.components(separatedBy: " ").forEach { numbers.append(Int($0)!) }

打印(数字)// [1,2,3,4,5,6]