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

Swift-替换服务器生成的CSV文件中的额外换行符,swift,csv,Swift,Csv,我为管理员创建了一个统计控制器,用于从数据库导出后端信息。控制器有几个带有UIPicker的字段来过滤数据,还有一个按钮来向服务器发送请求,API(用C#编写)负责导出 数据当前正在导出为CSV并添加回我的控制器。问题是,附加文件在每行数据之后都包含一个额外的换行符。不过,CSV在Windows计算机上看起来非常完美 如果这是一个Windows/Unix问题,换行符的处理方式不同,我可以做些什么来解决这个问题?我希望在用户以电子表格的形式实际打开文件之前,所有这些额外的行都被删除 在我的wind

我为管理员创建了一个统计控制器,用于从数据库导出后端信息。控制器有几个带有UIPicker的字段来过滤数据,还有一个按钮来向服务器发送请求,API(用C#编写)负责导出

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

如果这是一个Windows/Unix问题,换行符的处理方式不同,我可以做些什么来解决这个问题?我希望在用户以电子表格的形式实际打开文件之前,所有这些额外的行都被删除

在我的windows计算机上

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
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
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

我想我们找到了问题所在。在Windows中,换行符相当于
\r\n
,但我需要
\n
使其在Linux/Unix设备上工作。

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

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
将为新行提供空字符串。过滤掉空字符串(在本例中为所有空字符串,但您可以根据需要执行任何操作):

使用必要的新行字符重新组合字符串:

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

或者查看4kman的简短答案:)

谢谢您的回复!很高兴知道这确实是可能的。谢谢!很好的解决方案:-)