Что нового

[Массивы] Считать файл в массив, указывая разделитель

deeman313

Новичок
Сообщения
9
Репутация
0
Подскажите пожалуйста, как считать текстовый файл в массив аналогично функции _FileReadToArray. Только она считывает одну строку в один элемент массива. Есть ли какая то другая функция, которая бы считала строку вида "слово1 - слово2" , указав разделитель "-", так чтобы "слово1" попало в один массив, а "слово2" в другой массив.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
deeman313 [?]
так чтобы "слово1" попало в один массив, а "слово2" в другой массив
Вот так например:

Код:
#include <Array.au3>

$aRead = StringSplit(StringStripCR(FileRead("File.txt")), @LF)
Dim $aArray1[$aRead[0]+1], $aArray2[$aRead[0]+1]

For $i = 1 To $aRead[0]
    $aSplit = StringSplit($aRead[$i], "-")
    
    $aArray1[0] += 1
    $aArray1[$aArray1[0]] = $aSplit[1]
    
    $aArray2[0] += 1
    $aArray2[$aArray2[0]] = $aSplit[2]
Next

_ArrayDisplay($aArray1)
_ArrayDisplay($aArray2)
 
Автор
deeman313

deeman313

Новичок
Сообщения
9
Репутация
0
Выдает ошибку.
Line 10 (путь)
$aArray1[$aArray1[0]]=$aSplit[0]
^ ERROR

Error: Array variable has incorrect number of subscripts or subscript dimension range exceeded.
 

madmasles

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

$hFile = FileOpen('test.txt', 0)
$sText = FileRead($hFile)
FileClose($hFile)
$sText = StringReplace($sText, '-', @TAB)
$iAr = @extended
If Not $iAr Then Exit
$aRead = StringSplit(StringStripCR($sText), @LF)
Dim $aArray1[$iAr + 1], $aArray2[$iAr + 1]

For $i = 1 To $aRead[0]
	If StringInStr($aRead[$i], @TAB) Then
		$aSplit = StringSplit($aRead[$i], @TAB, 2)
		$aArray1[0] += 1
		$aArray1[$aArray1[0]] = $aSplit[0]

		$aArray2[0] += 1
		$aArray2[$aArray2[0]] = $aSplit[1]
	EndIf
Next
_ArrayDisplay($aArray1)
_ArrayDisplay($aArray2)
 
Автор
deeman313

deeman313

Новичок
Сообщения
9
Репутация
0
Спасибо большое за помощь, все работает
:IL_AutoIt_1:
 
Верх