ynbIpb
Скриптер
- Сообщения
- 399
- Репутация
- 110
Имеется текстовый файл такой структуры:
Задача собрать данные из него в двухмерный массив типа:
Dim $aAllText[2][$n]
$aAllText[0][$n] = "[некий текст 1]" ;без скобок
$aAllText[1][$n] = "Другой текст 1" ; включая символы переноса строки если они есть
Тоесть текст в квадратных скобках связан с текстом, который идёт после него с новой строки и вплоть до следующего фрагмента в квадратных скобках.
Мой подход был такой:
Но он не годится, так как в тексте бывает по несколько строк и все они должны быть в одной ячейке массива, а FileReadLine это всё срезает
Подскажите более правильную реализацию.
Код:
[некий текст 1]
Другой текст 1
[некий_текст_2]
Другой_текст_2
[некий текст 3]
Другой
текст3
[некий текст 4]
Другой
текст4
Dim $aAllText[2][$n]
$aAllText[0][$n] = "[некий текст 1]" ;без скобок
$aAllText[1][$n] = "Другой текст 1" ; включая символы переноса строки если они есть
Тоесть текст в квадратных скобках связан с текстом, который идёт после него с новой строки и вплоть до следующего фрагмента в квадратных скобках.
Мой подход был такой:
Код:
#Include <Array.au3>
$sAllText = @ScriptDir & "\Gen_Common.lin.bf.txt"
$hOLIfile = FileOpen ($sAllText, 0+128) ;открываем файл в режиме чтения
$iStr = 1 ; номер элемента
Dim $aAllText[101][2]; объявляем массив
While 1
If $iStr > 100 Then ExitLoop
$sOLIfile = FileReadLine ($hOLIfile)
If StringLeft ($sOLIfile, 1) = "[" And StringRight ($sOLIfile, 1) = "]" Then ; если по краям есть скобки
$aAllText[$iStr][0] = StringTrimRight (StringTrimLeft ($sOLIfile, 1), 1) ; записываем эту строку в массив, отрезая скобки
$aAllText[$iStr][1] = FileReadLine ($hOLIfile); следующая строка по любому без скобок b относится к предыдущему тексту
$iStr += 1
EndIf
WEnd
FileClose ($hOLIfile)
_ArrayDisplay($aAllText)
Но он не годится, так как в тексте бывает по несколько строк и все они должны быть в одной ячейке массива, а FileReadLine это всё срезает
Подскажите более правильную реализацию.