Как разделить строки с разделителями табуляции в 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%