Swift - 替换服务器生成的 CSV 文件中的额外换行符



我为管理员创建了一个统计控制器,用于从数据库中导出后端信息。控制器有几个字段,其中包含用于筛选数据的 UIPickers 和一个用于向服务器发送请求的按钮,其中 API(用 C# 编写)负责导出。

数据当前正在导出到 CSV 并添加回我的控制器。问题是附加的文件在每行数据后包含一个额外的换行符。不过,CSV在Windows机器上看起来很完美。

如果这是一个Windows/Unix问题,其中换行符的处理方式不同,我该怎么做才能解决这个问题?我希望在用户实际将文件作为电子表格打开之前,所有这些额外的行都消失了。

在我的窗口机器上

Created by: ""
Created on: ""
Name,Date,Score
Jack Sparrow,2017-07-03-14:48:58,80
Jack Sparrow,2017-07-03-14:49:33,100

在我的 Mac 和 iPhone 上

Created by: ""
Created on: ""

Name,Date,Score
Jack Sparrow,2017-07-03-14:48:58,80
Jack Sparrow,2017-07-03-14:49:33,100

如果要完全删除空行,可以使用简单的字符串替换函数。

let array = string.enumerateLines { line, _ in linesArray.append(line) }
let result = array.filter { !$0.isEmpty }.joined(separator: "n")

如果您想在Mac/iOS客户端上快速解决此问题,并且不太关心性能,则可以通过删除额外的新行来重建文件。如果您没有包含大量行的文件(>500 作为疯狂猜测),则下一种方法应该可以正常工作且相对较快。

将文件读入字符串:

let fileStr = String.init(contentsOf: yourFileURL)

获取生产线组件:

let comps = fileStr.components(separatedBy: CharacterSet.newlines)

components:separatedBy将为您提供新行的空字符串。过滤掉空字符串(在本例中是所有空字符串,但您可以执行任何需要的操作):

let fiteredComps = comps.filter { !$0.isEmpty }

使用必要的换行符重构字符串:

var recomposedString = ""
for str in filteredComps {
recomposedString += str
recomposedString += "n" // or whatever character you need
}

或者查看4公里:)的更短的答案

我认为我们发现了问题。在Windows中,换行符等于rn,但我需要n才能使其在Linux/Unix设备上工作。

最新更新