将Array中的String拆分为数组autohotkey

时间:2016-08-18 20:48:07

标签: autohotkey

尝试在自动热键中读取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],",")

1 个答案:

答案 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]