如何在Autohotkey中拆分制表符分隔的字符串?

时间:2017-08-10 17:51:35

标签: string split autohotkey tab-delimited

我将一系列制表符分隔的字符串复制到Windows剪贴板。我想使用制表符将这些字符串拆分为数组。

Unit    Dept_ID Name
CORP    0368    Admin
CORP    3945    Programmer
SESHAN  4596    Software Engineer   

我尝试使用StringSplit(),但我无法弄清楚如何使用'标签'作为我的分隔符。我尝试过几种不同的方法,但似乎都没有。

clipboard = %clipboard%  ; Convert to plain text
StringSplit, MyArray, clipboard, `\t` ; Split string using tabs
MsgBox % "MyArray[1] = " . MyArray[1] ; BUG: Prints empty string

如何在AutoHotkey中拆分制表符分隔的字符串?

2 个答案:

答案 0 :(得分:2)

首先,您需要将它们分成以下行:

lines := StrSplit(clipboard, "`n")

然后,您可以遍历所有行并将它们拆分为创建多维数组的列:

columns := []
for index, value in lines
    columns.Insert(StrSplit(value, "`t"))
; examples
MsgBox % columns[1][2] ; Dept_ID
MsgBox % columns[2][1] ; CORP
MsgBox % columns[2][2] ; 0368

请注意,Autohotkey有两种类型的数组" new"实际上是对象的类型,并将它们与arr[index]和较旧的伪数组一起使用。在你的代码中混合它们,StringSplit返回一个伪数组,不能与[]一起使用。我建议您阅读documentation中的数组。

答案 1 :(得分:1)

此拆分标签将剪贴板内容分隔为数组

MyArray := StrSplit( clipboard, "`t" )
MsgBox % "MyArray[1] = " . MyArray[1]

功能相同

StringSplit MyArray, clipboard, `t
MsgBox MyArray1 = %MyArray1%