Преобразуйте строковые элементы в элементы int в массиве в swift - PullRequest
0 голосов
/ 07 июня 2019

У меня есть строка в следующем формате:

var cadenaCoordenadas = """
1,1
1,3
4,1
5,1
1,5
1,6
2,5
0,0
"""

Я хочу, чтобы каждая строка была в следующем формате (в массиве), чтобы манипулировать ею (с типами данных Int, как я буду делатьоперации с новой строкой): [1,1]

У меня есть следующий код:

var arregloEntradas = cadenaCoordenadas.split(separator: "\n")
print("primer Arreglo: ", arregloEntradas)
for i in stride(from: 0, through:arregloEntradas.count - 1, by: 1){
    let arregloEntradasFinal = arregloEntradas[i].split(separator: ",")
    print(arregloEntradasFinal)
}

, и я получаю результат этого:

это результат

, как вы можете видеть, элементы массива имеют строковый тип, однако я требую, чтобы они были типа Int:

[1,1]
[1,3]
[4,1]
...

Я надеюсь, что вы можете помочьмне, спасибо заранее.

Ответы [ 3 ]

1 голос
/ 07 июня 2019

Вот один из подходов с использованием некоторого разбиения и отображения:

var cadenaCoordenadas = """
1,1
1,3
4,1
5,1
1,5
1,6
2,5
0,0
"""

let arregloEntradasFinal = cadenaCoordenadas.split(separator: "\n")
                           .map { $0.split(separator: ",").compactMap { Int($0) } }
print(arregloEntradasFinal)

Выход:

[[1, 1], [1, 3], [4, 1], [5, 1], [1, 5], [1, 6], [2, 5], [0, 0 ]]

0 голосов
/ 07 июня 2019

То, что вы получаете в arregloEntradasFinal, правильно, так как вы обрабатываете строковый массив. Позже, когда вы захотите снова использовать arregloEntradasFinal, вам следует снова разделить строку разделителем-запятой из arregloEntradasFinal и использовать отдельное значение Int. Например:

let index = 0 // You can also loop through the array
let values = arregloEntradasFinal[index].split(separator: ",")
let num1 = Int(values.first ?? 0) // If no value then returns 0
let num2 = Int(values.last ?? 0)  // If no value then returns 0

Примечание - это один из способов без использования функции map.

0 голосов
/ 07 июня 2019
var arregloEntradas = cadenaCoordenadas.split(separator: "\n")
print("primer Arreglo: ", arregloEntradas)
for i in stride(from: 0, through:arregloEntradas.count - 1, by: 1){
    let arregloEntradasFinal = arregloEntradas[i].split(separator: ",").map { Int(String($0)) }
    print(arregloEntradasFinal)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...