读取某些类型的值时出现问题

时间:2019-04-27 09:32:20

标签: ios swift macos

假设我有一个文件,其中的数据显示如下:

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!)
}

我创建了一个代表每一行的对象(这对于以后要做的事情是必要的),我读取数字并将其保存到我的对象中。

只要出现这些不需要的'*',它就起作用。 我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以在将字符串转换为*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: ""))
}