2016-08-18 2 views
0

Пытается прочитать CSV-файл в Auto Hot Key и по очереди разделить строку на «,», чтобы вытащить последние два столбца каждой строки. В настоящее время просто пытается заставить строку разбиться на массив. Я могу распечатать каждую строку с помощью строки MsgBox, A_LoopReadLine, но не может разбить строку внутри переменной.Сплит String в массиве autohotkey

Попробовали StringSplit и StrSplit, но я уверен, что синтаксис неверен.

MyArray := Object() 
Loop, read, %fileop% 
{ 
    MyArray.Insert(A_LoopReadLine) ; Append this line to the array. 
    index := 1 
    MsgBox, %A_LoopReadLine% 
    ;MyArray. 
    ;MsgBox, % StrSplit(A_LoopReadLine ,",") 
} 

Loop % MyArray.Length() 
    MsgBox % StrSplit(MyArray[A_Index],",") 
+0

Связанные: [? Как я могу разделенное разделителями табуляции строки в AutoHotKey] (https://stackoverflow.com/q/45620437/3357935) –

ответ

1

Попытка прочитать файл CSV в автоматическом Горячем Ключе и построчно разделить линии «» вытащить последние два столбца каждой строки.

MyArray := Object() 
Loop, Read, %fileop% 
    MyArray[A_Index]:=StrSplit(A_LoopReadLine,",") 

Это сохранит файл CSV в формате MyArray[row][column]. Например, чтобы получить доступ к второму пункту в пятом ряде: MyArray[5][2]

for k,v in MyArray 
    v.RemoveAt(1,v.Length()-2) 

Выше будет удален все, но последние два элемента из каждой строки.


Документация:

https://autohotkey.com/docs/commands/For.htm

https://autohotkey.com/docs/objects/Object.htm#RemoveAt_v1121+

https://autohotkey.com/docs/objects/Object.htm#Length


Edit: И, почему ваш код не работает. Это было так. Дело в том, что StrSplit() возвращает объект, массив поэтому с нижней строкой вы пытались отобразить объект в MsgBox, это запрещено.

MsgBox % StrSplit(MyArray[A_Index],",") 

Это, например, будет работать:

MsgBox % StrSplit(MyArray[A_Index],",")[1] 
Смежные вопросы