本文介绍了如何分割在斯威夫特新行字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个字符串,我从一个文本文件中得到了。
文本文件:
1号线
2号线
3号线
...
我想将其转换为一个数组,每行一个数组元素。
[1号线,2号线,3号线,...]
根据文件如何保存,字符串可以采取以下形式之一:
-
字符串=1号线\\ n线2 \\ n线3 \\ n ...
,其中\\ n
是新行(换行)字符 -
字符串=1号线\\ r \\ n线2 \\ r \\ n线3 \\ r \\ n ...
,其中\\ - [R
是回车符。
据我了解, \\ n
通常在今天的苹果/ Linux的使用,而 \\ r \\ n
在Windows中使用。
我如何分割在任何线路断线得到一个String数组没有任何空元素?
更新
有几种解决方案,以下工作。在这一点上,我没有任何令人信服的理由来选择一个作为比别人更正确。可能影响选择的一些因素可能是(1)如何雨燕是,(2)它是很长的字符串的速度有多快。可以通过upvoting其中的一个或多个和/或离开的注释提供反馈
解决方案
您可以使用字符串方法 enumerateLines
let sentence = "Line 1\nLine 2\nLine 3\n"
var sentenceLines:[String] = []
sentence.enumerateLines { sentenceLines.append($0.line) }
print(sentenceLines) // "[Line 1, Line 2, Line 3]"
You can create a read only computed property extension to return an array of lines as follow:
extension String {
var lines:[String] {
var result:[String] = []
enumerateLines{ result.append($0.line) }
return result
}
}
let sentence2 = "Line 4\nLine 5\nLine 6\n"
let sentence2Lines = sentence2.lines
print(sentence2Lines) // ["Line 4", "Line 5", "Line 6"]
let sentence3 = "Line 7\r\nLine 8\r\nLine 9\r\n"
let sentence3Lines = sentence3.lines
print(sentence3Lines) // "[Line 7, Line 8, Line 9]"
这篇关于如何分割在斯威夫特新行字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!