我尝试解析我的txt文件,我在txt文件中有问题和5个答案,我想将问题保存到单独的变量和类似的答案中。
我的代码:
do {
let path = Bundle.main.path(forResource: "data", ofType: "txt")
let source = try? String.init(contentsOfFile: path!)
var elements = source?.components(separatedBy: "\n")
var parsedObject = [[String: String]]()
for i in 0..<(elements?.count)! - 1 {
let objects = [String : String]()
let element = elements![i]
//print(element)
let objectsElement = element.components(separatedBy: "\r")
let question = objectsElement[0]
let answer1 = objectsElement[1]
let answer2 = objectsElement[2]
let answer3 = objectsElement[3]
let anserr4 = objectsElement[4]
let answer5 = objectsElement[5]
print(question, answer1, answer2, answer3, anserr4, answer5)
print(objectsElement)
}
}
我收到的错误:
线程1:致命错误:索引超出范围
如果我评论此代码:
let question = objectsElement[0]
let answer1 = objectsElement[1]
let answer2 = objectsElement[2]
let answer3 = objectsElement[3]
let anserr4 = objectsElement[4]
let answer5 = objectsElement[5]
print(question, answer1, answer2, answer3, anserr4, answer5)
我会得到这样的输出:
结构文件:
https://drive.google.com/file/d/1ah1Mk_WY3b_qbqKM18nxxPT1rNXFiISa/view?usp=sharing
在您的情况下,实现所需目标的一种方法是:
do {
let path = Bundle.main.path(forResource: "Data", ofType: "txt")
let source = try? String.init(contentsOfFile: path!)
var elements = source?.components(separatedBy: "\n\n") // Here is the change
var parsedObject = [[String: String]]()
for i in 0..<(elements?.count)! - 1 {
let objects = [String : String]()
let element = elements![i]
let objectsElement = element.components(separatedBy: "\n") // And Here
if objectsElement.count > 1 {
let question = objectsElement[0]
let answer1 = objectsElement[1]
let answer2 = objectsElement[2]
let answer3 = objectsElement[3]
let answer4 = objectsElement[4]
let answer5 = objectsElement[5]
print("Question: \(question)")
print("Answer: \(answer1)")
print("Answer: \(answer2)")
print("Answer: \(answer3)")
print("Answer: \(answer4)")
print("Answer: \(answer5)")
}
}
}
如果您不更改文本文件格式,则可以通过这种方式获得解决方案。现在,您可以尝试此解决方案,但寻找更好的解决方案,或者如果我可以得到更好的解决方案,我会尽快发布答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句