尝试在自动热键中读取CSV文件并逐行将该行拆分为","拉出每一行的最后两列。目前只是试图将字符串拆分为数组。我可以用线打印每一行
MsgBox, A_LoopReadLine
但不能将字符串拆分为变量。
尝试过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 :(得分:2)
尝试在自动热键中读取CSV文件并逐行拆分 by","拉出每一行的最后两列。
MyArray := Object()
Loop, Read, %fileop%
MyArray[A_Index]:=StrSplit(A_LoopReadLine,",")
这将以MyArray[row][column]
格式存储您的csv文件。例如,访问第五行中的第二项: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
编辑:
至于为什么你的代码不起作用。它确实有点。
问题是StrSplit()
返回对象,数组,所以在下面的行中你试图在MsgBox中显示对象,这是不允许的。
MsgBox % StrSplit(MyArray[A_Index],",")
这例如可行:
MsgBox % StrSplit(MyArray[A_Index],",")[1]