2016-08-18 2 views
0

Versuchen Sie eine CSV-Datei in Auto Hot Key und Zeile für Zeile zu lesen, teilen Sie die Zeile durch ",", um die letzten zwei Spalten jeder Zeile zu ziehen. Derzeit versuche ich nur, die Zeichenfolge in ein Array aufzuteilen. Ich kann jede Zeile mit der Zeile MsgBox, A_LoopReadLine drucken, aber die Zeichenfolge innerhalb der Variablen nicht teilen.Split String in Array in ein Array autohotkey

Ich habe versucht, StringSplit und StrSplit, aber ich bin mir sicher, dass die Syntax falsch ist.

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

Verwandte: [? Wie kann ich spaltete Tab-separierte Strings in Autohotkey] (https://stackoverflow.com/q/45620437/3357935) –

Antwort

1

Der Versuch, eine CSV-Datei in Auto-Hot Key und Zeile für Zeile zu lesen, spaltete die Linie durch „“ um die letzten beiden Spalten jeder Zeile herausziehen.

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

Dies wird Ihre CSV-Datei in MyArray[row][column] Format speichern. Z. B in fünfte Zeile zweite Element zuzugreifen: MyArray[5][2]

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

Above alle aber letzten beiden Punkte aus jeder Zeile entfernen.


Dokumentation:

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: Und, warum Ihr Code hat nicht funktioniert. Es hat irgendwie getan. Die Sache ist, dass StrSplit()Objekt, Array zurückgibt so mit unter Linie Sie versucht, Objekt in MsgBox anzuzeigen, das ist nicht erlaubt.

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

Dieses zum Beispiel funktionieren würde:

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