Проблема с чтением значений как определенных типов - PullRequest
0 голосов
/ 27 апреля 2019

Допустим, у меня есть файл, в котором данные выглядят так:

1 10 20 30
2 12 33 44
3  1  2 3*

Я пытаюсь читать эти значения построчно и записывать их в созданный мной массив.Проблема в том, что некоторые числа имеют этот знак «», который я должен игнорировать.По сути, я хочу, чтобы моя программа читала «3 » и сохраняла его в своем массиве как «3» (значение с плавающей запятой).

Пока это мой код

let contents = try! String(contentsOfFile: myFileName)
let lines = contents.split(separator:"\n")

let numberOfLines = lines.count

///day is my class with three variables
let days = (0...numberOfLines).map{ _ in day() }

for n in 0...(numberOfLines-1)
{
    let dataVar = lines[n].split(separator: " ")

    days[n].dayNumber = Int(dataVar[0])
    days[n].maxTemp = Float(dataVar[1])
    days[n].minTemp = Float(dataVar[2])
}

//here I print the numbers I've read before
for n in 0...(numberOfLines-1)
{
    print(days[n].dayNumber!)
    print(days[n].maxTemp!)
    print(days[n].minTemp!)
}

Iсоздать объект, который представляет каждую строку (это необходимо для того, что я собираюсь сделать позже), я читаю числа и сохраняю их в свои объекты.

Работает, пока появляются эти нежелательные '*'. Как мне пройти через это?

1 Ответ

0 голосов
/ 27 апреля 2019

Вы можете удалить *, вызвав replacingOccurrences(of:) перед преобразованием строки в Float или Int:

for n in 0...(numberOfLines-1)
{
    let dataVar = lines[n].split(separator: " ")

    days[n].dayNumber = Int(dataVar[0].replacingOccurrences(of: "*", with: ""))
    days[n].maxTemp = Float(dataVar[1].replacingOccurrences(of: "*", with: ""))
    days[n].minTemp = Float(dataVar[2].replacingOccurrences(of: "*", with: ""))
}
...