Swift:由字符串分隔的组件
Posted
技术标签:
【中文标题】Swift:由字符串分隔的组件【英文标题】:Swift: Component separated by string 【发布时间】:2015-04-17 10:22:15 【问题描述】:我有一个日志文件,例如: 000124 14:44:54:370 文本 IO 文本 文本 文本 文字文字文字
文字文字文字 000125 14:44:54:370 文本 IO 文本 文本 文本 文本 文本
文本文本 000126 14:44:54:370 文本 IO 文本 文本 文本
我使用以下代码将此文本拆分为一个数组:
let path = NSBundle.mainBundle().pathForResource("log file", ofType: "log")
var text = String(contentsOfFile: path!, encoding: NSUTF8StringEncoding, error: nil)!
var textArr = text.componentsSeparatedByString("\r\n0")
var lines = textArr.count
但有时日志文件会变得非常大,并且会发生这种情况: 099999 14:44:54:370 文本 IO 文本 文本 文本 文字文字文字
文字文字文字 100000 14:44:54:370 文本 IO 文本 文本 文本 100001 14:44:54:370 文本 IO 文本 文本 文本
我想做的是有一个代码来做这样的事情:
var textArr = text.componentsSeparatedByString("\r\n0" OR "\r\n1")
这可能吗?或者我的问题的任何其他解决方案?
【问题讨论】:
为什么要用\r\n0
分割呢?你不能用\r\n
吗?
对不起,这是一个错误的日志文件示例,我现在更新了它。 \r\n0 是唯一重复的东西,我可以将其拆分以获得新的日志行。
【参考方案1】:
我通过这样做“解决”了它,也许不是最聪明的方法,但它似乎工作正常:
var text = String(contentsOfFile: path!, encoding: NSUTF8StringEncoding, error: nil)!
var textArr = text.componentsSeparatedByString("\r\n0")
var lines = textArr.count
var textArrLarge = textArr[lines-1].componentsSeparatedByString("\r\n1")
var linesLarge = textArrLarge.count
var linesTot = lines + linesLarge-1
var textArrTot = textArr + textArrLarge
textArrTot.removeAtIndex(lines)
【讨论】:
以上是关于Swift:由字符串分隔的组件的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中向 UITableView 添加按日期分隔的部分