Swift 遍历字符串并测试字符的差异
我试图遍历一系列类似于此的字符Swift 遍历字符串并测试字符的差异,swift,string,Swift,String,我试图遍历一系列类似于此的字符 //Example.txt 0 X X X 0 0 X 0 X 0 0 0 X 0 0 0 X 0 X 0 0 X X X 0 我想知道X和0之间的区别。我当前使用的代码导致无限循环运行,然后我的应用程序永远无法完成构建 let path = Bundle.main.path(forResource: "Example.txt", ofType: nil) do { let fileContents = try String(contentsOfFile
//Example.txt
0 X X X 0
0 X 0 X 0
0 0 X 0 0
0 X 0 X 0
0 X X X 0
我想知道X和0之间的区别。我当前使用的代码导致无限循环运行,然后我的应用程序永远无法完成构建
let path = Bundle.main.path(forResource: "Example.txt", ofType: nil)
do {
let fileContents = try String(contentsOfFile:path!, encoding: String.Encoding.utf8)
let lines = fileContents.components(separatedBy: "\n")
for row in 0..<lines.count {
let items = lines[row].components(separatedBy: " ")
for column in 0..<items.count {
print(column,row)
}
}
} catch {
print("Error loading map")
}
let path=Bundle.main.path(forResource:“Example.txt”,类型:nil)
做{
让fileContents=try String(contentsOfFile:path!,encoding:String.encoding.utf8)
let line=fileContents.components(以“\n”分隔)
对于0..中的行,您没有在内部for中使用“column”变量。事实上,在每次迭代中,您总是将“items”数组(items[1]
)的第二个元素与“0”进行比较。如果items数组的元素少于2个,则会导致越界错误
也许您应该如下迭代(我建议使用“for in”循环):
虽然我不理解你的“if else”,但如果文件只能包含“0”或“X”,而你只是将其可视化,那么你最好只print(item)
。如果你的应用程序没有生成,那么它就无法“完美地迭代.txt文档”或“使无限循环运行它开始生成,但由于它无限循环,它实际上从未完成生成。请编辑我的问题以澄清您应该检查每一列而不是每一项。let lines=fileContents.components(separatedBy:.newlines)中的行{let columns=line.components(separatedBy:”)对于列中的列{print(column)}
oh-duh!绝对不会猜到要测试项中的每个项。谢谢,很多工作完全符合我的需要。:)
for row in 0..<lines.count {
let items = lines[row].components(separatedBy: " ")
for column in 0..<items.count {
if items[1] == "0" {
print("0")
} else {
print("X")
}
}
}
for line in lines {
let items = line.components(separatedBy: " ")
for item in items {
if item == "0" {
print("0")
} else {
print("X")
}
}
}