我在Swift中解析一个简单的.txt
文件,遇到了一个奇怪的问题。
文本文件如下:
This is a test \nThis should be on a new line
这是我的代码:
let path = Bundle.main.path(forResource: "test", ofType: "txt")
let example = try? String(contentsOfFile: path!, encoding: .utf8)
let example1 = "This is a test. \nThis should be on a new line."
example
打印如下:
This is a test \nThis should be on a new line
虽然example1
打印如下:
This is a test
This should be on a new line
为什么从文本文件中读取时未检测到新行字符?
答案 0 :(得分:3)
您在文件内容中看到的不是EOL字符,用肉眼看不到,而是两个字符:“\”和“n”。如果文件确实具有EOL,那么如果您声明并打印的字符串,它看起来与输出相同。
“\ n”是一个转义序列,允许您以编程方式在自定义字符串中添加行结尾。编译器将“\ n”组合转换为具有代码10的字符(EOL用于* nix平台)。这就是你的代码中发生的事情,这就是为什么在打印时,字符串有一个EOL。
答案 1 :(得分:0)
使用反斜杠转义读取文本文件。如果要用新行替换所有出现的\ n,请使用replacingOccurrences(of:with:)
:
let exampleWithNewlines = example.replacingOccurrences(of: "\\n", with: "\n")