Что нового

Разбор текстового файла

MaDCoW

Новичок
Сообщения
3
Репутация
0
Помогите разобраться.
Есть текстовый файл типа
[box title=TitleBox]
Основная
\\Server\Base1\ База1
\\Server\Base2\ База2
Второстепенные
\\Server\Base41\ База41
\\Server\Base42\ База42
Ненужные
\\Server\Base21\ База21
\\Server\Base12\ База12
[/box]
Хочеться растащить эти данные в два масива то есть
Array1[..название..] = {Основная,Второстепенные,Ненужные}
Array2[..путь..][..название..] = {Всё остальное}
Как лучше сделать? На разборе строк ввести какие If...Then или загнать всё в один массив и потом уже разбирать его на составляющие?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
MaDCoW
У меня так получилось:
Код:
#include <Array.au3>

$sText = FileRead('1.txt')
$aFirst = StringRegExp($sText, '.*?([а-яА-Я]+)\r\n', 3)
_ArrayDisplay($aFirst)
$aTempSecond = StringRegExp($sText, '.*?(\\\\.*?)\s.*?', 3)
;_ArrayDisplay($aTempSecond)
$aTempThird = StringRegExp($sText, '([а-яА-Я]+\d+)', 3)
;_ArrayDisplay($aTempThird)
If UBound($aTempSecond) <> UBound($aTempThird) Then Exit
Dim $aSecond[UBound($aTempSecond)][2]
For $i = 0 To UBound($aSecond) - 1
	$aSecond[$i][0] = $aTempSecond[$i]
	$aSecond[$i][1] = $aTempThird[$i]
Next
_ArrayDisplay($aSecond)
 
Автор
M

MaDCoW

Новичок
Сообщения
3
Репутация
0
Супер. Все работает. Спасибо огромное.
 

ynbIpb

Скриптер
Сообщения
399
Репутация
110
Дабы не плодить темы, спрошу тут.
я формирую текстовый файл, но в нём у меня попадаются непечатаемые символы, которые я заменяю HEX кодом. Например:
Исходная строка: [ Add Dummy  Confirm  Remove All     Move]
Новая строка: [{EF}{80}{85} Add Dummy {EF}{80}{88} Confirm {EF}{80}{87} Remove All {EE}{A0}{81} {EE}{A0}{82} {EE}{A0}{84} {EE}{A0}{83} Move]
Потом я буду считывать по одной строке, преобразовывать в HEX, а те фрагменты, которые в фигурных скобках мне нужно определить и не преобразовывать, а сразу взять код символа из скобок.
Помогите пожалуйста реализовать.
 

Nik_rus

Python The Snake.
Сообщения
214
Репутация
62
:laugh:
Код:
#include <Array.au3>
$str = "{EF}{80}{85} Add Dummy {EF}{80}{88} Confirm {EF}{80}{87} Remove All {EE}{A0}{81} {EE}{A0}{82} {EE}{A0}{84} {EE}{A0}{83} Move"
$c = _StringEncode($str)
MsgBox(0,"Info",$c)
Func _StringEncode($s)
	$s = StringToASCIIArray($s)
	_ArrayDisplay($s)
	$res = ""
	For $i=0 To UBound($s)-1 Step 1
		If Chr($s[$i])="{" Then
			$res = $res & Chr($s[$i]) & Chr($s[$i+1]) & Chr($s[$i+2]) & Chr($s[$i+3])
			$i = $i+3
		Else
			$res = $res & Hex($s[$i],2)
		EndIf
	Next
	Return $res
EndFunc
 

ynbIpb

Скриптер
Сообщения
399
Репутация
110
Спасибо за пример, но есть ли возможность использовать регексп в этой ситуации?
тоесть должно учитываться, что могут быть фигурные скобки не относящиеся к коду символа (тоесть как часть текста). Нужно определять существуют ли обе скобки, находится ли в них 2 символа 16-тиричной системы счисления.
 
Автор
M

MaDCoW

Новичок
Сообщения
3
Репутация
0
Эх... теперь бы разобраться как получившейся второй массив разобрать на части.
То есть как отличить часть текста который идет после "Основная" от к примеру после"Ненужные" с учётом того что количество строк не стабильно :blink:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
MaDCoW
Вы пример файла приведите и что с ним надо сделать напишите.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
ynbIpb [?]
Дабы не плодить темы
Ну почему все так боятся плодить темы? :Censored: :Rulz:

Плодите (по правилам), на то и форум.
 
Верх