我为管理员创建了一个统计控制器,用于从数据库中导出后端信息。控制器有几个字段,UIPickers用于过滤数据,还有一个按钮用于向服务器发送请求,其中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
在我的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
答案 0 :(得分:1)
如果要完全删除空行,可以使用简单的字符串替换函数。
let array = string.enumerateLines { line, _ in linesArray.append(line) }
let result = array.filter { !$0.isEmpty }.joined(separator: "\n")
答案 1 :(得分:1)
如果你想在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
}
或者查看 the4kman 的更短答案:)
答案 2 :(得分:0)
我认为我们发现了这个问题。在Windows中,换行符等于\r\n
,但我需要\n
才能使其在Linux / Unix设备上运行。