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 添加按日期分隔的部分

在Swift中用1个字符串翻译两个变量和一个分隔符

如何通过 Swift3 将 HTML 字符串分隔为数组或字典?

在 Swift 中向 Int 添加千位分隔符

如何在Swift中将键值对分解为JSON字符串?

拆分由任何非数字字符串分隔的数字