2015-04-17 3 views
1

У меня есть лог-файл, пример:
000124 14: 44: 54: 370 Текст IO Текст Текст Текст
Текст Текст Текст
Свифта: Компонент разделены строки

Текст Текст Текст

000125 14: 44: 54: 370 текст IO текст текст текст текст текст текст

texttext
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") 

Будет ли это возможно? Или любые другие решения для моей проблемы?

+0

Почему вам нужно разделить его на '\ г \ n0'? Вы не можете использовать '\ r \ n'? – Padarom

+0

Извините, это был плохой пример файла журнала, я обновил его сейчас. \ r \ n0 является единственной повторяющейся вещью, которую я мог бы разбить на новую логическую линию. – Martik

ответ

0

я «решил» это, делая это, возможно, не самый эффективный способ, но это, кажется, работает нормально:

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) 
Смежные вопросы