假设我有一个文件,其中的数据显示如下:
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!)
}
我创建了一个代表每一行的对象(这对于以后要做的事情是必要的),我读取数字并将其保存到我的对象中。
只要出现这些不需要的'*',它就起作用。 我该怎么办?
答案 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: ""))
}