【发布时间】:2015-11-08 09:32:19
【问题描述】:
我有一个从文本文件中得到的字符串。
文本文件:
Line 1
Line 2
Line 3
...
我想把它转换成一个数组,每行一个数组元素。
[ "Line 1", "Line 2", "Line 3", ... ]
根据文件的保存方式,字符串可以采用以下形式之一:
-
string = "Line 1\nLine 2\nLine 3\n..."其中\n是换行符(换行符) -
string = "Line 1\r\nLine 2\r\nLine 3\r\n..."其中\r是回车符。
据我了解,\n 目前普遍用于 Apple/Linux,而\r\n 用于 Windows。
如何在任何换行符处拆分字符串以获得没有任何空元素的字符串数组?
更新
下面有几种解决方案。在这一点上,我没有任何令人信服的理由来选择一个比其他的更正确。可能影响选择的一些因素可能是(1)它有多“Swift”和(2)它对于很长的字符串有多快。您可以通过点赞其中一个或多个和/或发表评论来提供反馈。
See my summarized answer here
【问题讨论】:
-
大概就像
split(stringFromFile, { newLineChars.characterIsMember($0) }, maxSplit: Int.max, allowEmptySlices: false)一样简单 -
@njzk2,我喜欢它的外观,但我收到一个错误“无法使用
String, (unichar) -> Bool, maxSplit Int, allowEmptySlices: Bool)类型的参数列表调用split”可能是Swift 2 中的语法发生了变化? -
让 test1 = "Line1\n\rLine2\n\rLine3\n\rLine4\nLine5\r\r\n\rLine6" let t1 =test1.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet()) 让t2 = t1.filter{ $0 != ""} 对我有用(Xcode 7,beta5)
标签: arrays string swift newline