我尝试读取捆绑包中文件的内容并将其放入字符串变量中。我使用了init(contentsOfFile:)
初始值设定项。但是,字符串末尾似乎总是有一个额外的\n
字符。
这是一个MCVE:
let string = try! String(contentsOfFile: Bundle.main.path(forResource: "test", ofType: "txt")!)
print(string.debugDescription)
test.txt
是这样的:
Hello
World
Bye
World
请注意,我没有在最后插入新行。这可以通过查看行数来证明:
上面的代码产生了这个输出:
"Hello\nWorld\nBye\nWorld\n"
请注意,最后一个字符为\n
。
这给我带来了很多麻烦。我使用\n
作为分隔符拆分字符串,然后解析每一行。最后的\n
会导致空字符串位于拆分字符串中。我不希望这样。
我想我可以调用dropLast
删除最后一个字符,但是我不确定当我这样做时,新行字符是否总是出现在最后我找不到任何文件。如果最后没有添加额外的新行字符,那么我的dropLast
调用将错误地删除“有用”字符。
为什么要添加新行?这总是会发生吗?
答案 0 :(得分:4)
这是Xcode的行为。 要对此进行测试,您可以通过右键单击文件选择
来查看包含换行符的文件Open As - >六角
如果不希望出现这种情况,您可以在终端中使用vim
并禁用添加: