繁体   English   中英

当我使用init(contentsOfFile :)创建一个字符串时,为什么还有一个额外的换行符?

[英]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并禁用添加:

VIM在文件末尾禁用自动换行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM