Как разделить строки с разделителями табуляции в Autohotkey?

У меня есть ряд строк с разделителями табуляции, скопированных в буфер обмена 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 ответа

Решение

Сначала вам нужно разделить их на массив строк с помощью:

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 имеет 2 типа массивов "нового" типа, которые на самом деле являются объектами, и вы используете их с arr[index] и старые псевдо-массивы. В вашем коде вы их перепутали, StringSplit возвращает псевдомассив и не может использоваться с [], Я рекомендую вам прочитать о массивах в документации.

Это разделяет содержимое буфера обмена с разделителями табуляции в массив

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

Функционально эквивалентный

StringSplit MyArray, clipboard, `t
MsgBox MyArray1 = %MyArray1%
Другие вопросы по тегам