[英]Why is there an extra new line character when I create a string using init(contentsOfFile:)?
我试图读取文件包中的文件内容并将其放入字符串变量中。 我使用了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
调用将错误地删除“有用的”字符。
为什么要添加新行? 这总是发生吗?
这是Xcode的行为。 要对此进行测试,您可以右键单击文件以选择以下内容,以换行符查看文件
打开为->十六进制
如果这种行为是不希望的,则可以在终端中使用vim
并禁用添加:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.