【问题标题】:Swift - Replace extra line breaks in server generated CSV fileSwift - 替换服务器生成的 CSV 文件中的额外换行符
【发布时间】:2017-07-04 08:21:41
【问题描述】:

我创建了一个统计控制器,供管理员从数据库中导出后端信息。控制器有几个带有 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

【问题讨论】:

    标签: swift csv


    【解决方案1】:

    如果你想一起删除空行,你可以使用一个简单的字符串替换功能。

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

    【讨论】:

    • 谢谢!不错的解决方案:-)
    【解决方案2】:

    如果您想在 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 的更简短的答案 :)

    【讨论】:

    • 感谢您的回复!很高兴知道这确实是可能的。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2021-06-25
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 2012-12-12
      • 2021-11-20
      • 2011-08-22
      • 2013-03-20
      • 1970-01-01
      相关资源
      最近更新 更多