오토핫키 텍스트 추출 - otohaski tegseuteu chuchul

48 - [오토핫키] 문자열관리, 파싱 (2)

Parsing (파싱)은 문장의 문법적인 구성을 분석하는 과정을 나타내는 용어로 사용됩니다. 47 - [오토핫키] 문자열관리, 파싱 (1) 에서 검색어의 존재 유무, 검색어의 위치를 찾는 방법을 다뤘다면 이번에는 특정 위치의 문자열을 추출하는 방법을 다루겠습니다. 

문법 : 왼쪽 / 오른쪽으로 부터 문자 추출

StringLeft, OutputVar, InputVar, Count

StringRight, OutputVar, InputVer, Count

설명

OutputVar

추출한 문자열을 저장할 변수의 이름.

InputVar

검색할 내용을 담고 있는 변수의 이름.

예제

예제1)

var =  ;변수에 여러줄을 담을땐 소괄호!

(

동해물과 백두산이 마르고 닳도록

하느님이 보우하사 우리 나라 만세

무궁화 삼천리 화려강산

대한사람 대한으로 길이 보전하세

)

StringLeft, Output, var, 8

MsgBox, %Output%

Return

예제2)

var =  ;변수에 여러줄을 담을땐 소괄호!

(

여 : 니가 나한테 어떻게 이럴 수 있어!?

남 : 미안해...

여 : 뭐가 미안한데?

남 : 뭐든 정말 다 미안해

여 : 니가 뭘 잘못한지도 모르고 사과를 해?

남 : 자기전에 전화 안한거 미안해

여 : 됐어 우리 헤어져!

)

StringRight, Output, var, 10

MsgBox, %Output%

Return

왼쪽에서부터, 혹은 오른쪽에서 부터 몇 번째 문자까지 추출하는 방식입니다.

문법 : 지정된 위치로부터 문자 추출

StringMid, OutputVar, InputVar, StartChar [, Count, L]

NewStr := SubStr(String, StartPos [, Length])

설명

OutputVar

추출한 문자열을 저장할 변수의 이름.

InputVar

검색할 내용을 담고 있는 변수의 이름.

StartChar

추출할 첫 문자의 위치. InStr처럼 첫 문자는 1입니다. 표현식 가능

L

StartChar로 첫 문자를 지정한 위치로부터 오른쪽이 아닌 왼쪽으로 추출합니다.

예제

예제1)

var =  ;변수에 여러줄을 담을땐 소괄호!

(

동해물과 백두산이 마르고 닳도록

하느님이 보우하사 우리 나라 만세

무궁화 삼천리 화려강산

대한사람 대한으로 길이 보전하세

)

StringMid, Output, var, 38, 3

MsgBox, %Output%

Return

예제2)

var =  ;변수에 여러줄을 담을땐 소괄호!

(

여 : 니가 나한테 어떻게 이럴 수 있어!?

남 : 미안해...

여 : 뭐가 미안한데?

남 : 뭐든 정말 다 미안해

여 : 니가 뭘 잘못한지도 모르고 사과를 해?

남 : 자기전에 전화 안한거 미안해

여 : 됐어 우리 헤어져!

)

MsgBox % SubStr(var, 70, 21)

Return

내장함수 SubStr(String, StartingPos [, Length]) 는 String에 담겨있는 문자열로부터 StartingPos의 위치를 시작으로 오른쪽으로 Length만큼 추출해서 돌려줍니다. 첫 번째 문자를 추출하려면 StartingPos는 1을 지정합니다.

SubStr()또한 문자열 관련 함수입니다. 이름에  Str(ing)이 들어가있기 때문에 대충 예측할 수 있습니다.

 SubStr() 

SubStr()은 특정 문자열의 "몇 번째 위치"부터 "몇 글자"만을 가져오는 함수입니다. 즉 문자열의 일부분을 잘라낼 수 있다는 뜻입니다.

SubStr(String, StartingPos [, Length])
  • String: 문자열이 담긴 변수명을 써주시면 됩니다.
  • StartingPos: 잘라낼 문자열의 시작 위치 (글자 수)
  • Length: 잘라낼 문자열의 길이. 쓰지 않으면 문자열의 끝까지 잘라냅니다.

이번엔 특별히 공식 예제를 가지고 왔습니다.

MsgBox, % SubStr("123abc789", 4, 3)

주어진 문자열은 123abc789이며, 네번째 글자부터 세 글자를 잘라내라고 하네요. MsgBox에는 abc가 출력되겠습니다.

String := "The Quick Brown Fox Jumps Over the Lazy Dog"
MsgBox, % SubStr(String, 1, 19)

String 변수의 값에서 첫 번째 글자부터 19글자를 가져오라고 합니다. The Quick Brown Fox까지 가져오겠네요. (공백 포함 19자)

특이하게도, StartingPos 매개변수엔 음수값을 넣을 수 있습니다. 이 경우 가장 마지막 글자가 0번째 글자가 되며, 뒤에서 두 번째 글자가 -1번째 글자가 되는 식입니다.

String := "The Quick Brown Fox Jumps Over the Lazy Dog"
MsgBox, % SubStr(String, -7)

위 예제는 Lazy Dog가 출력되는 것을 볼 수 있습니다. Length값을 쓰지 않아서 문자열의 끝까지 가져오는 모습을 볼 수 있습니다.

< 62. InStr()과 StrLen() | 63. SubStr() | 64. 정규식 : RegExMatch >

������ â���κ��� �ؽ�Ʈ�� �����մϴ�.

WinGetText, OutputVar [, WinTitle, WinText, ExcludeTitle, ExcludeText]

������

OutputVar

������ �ؽ�Ʈ�� ������ ������ �̸�.

WinTitle

��ǥ â�� �ĺ��ϴ� â ���� �Ǵ� �ٸ� ����. WinTitle ����.

WinText

�����ϸ�, ��ǥ â �ؽ�Ʈ�� �ι��ڿ��Դϴ� (������ Window Spy ��ƿ��Ƽ�� �����). ���� �ؽ�Ʈ�� DetectHiddenText�� ����(ON) ������ Ž���˴ϴ�.

ExcludeTitle

���� �� ���� �ִ� â�� �����մϴ�.

ExcludeText

�ؽ�Ʈ�� �� ���� �ִ� â�� �����մϴ�.

ErrorLevel

[v1.1.04+] �� ���ɾ�� �����ϸ� ���ܸ� ���� �� �ֽ��ϴ�. �� �ڼ��� ������ ����ð� ������ �����Ͻʽÿ�.

ErrorLevel�� ������ �־����� 1,. �׷��� ������ 0�� �����˴ϴ�.

����

������ �ؽ�Ʈ�� �Ϲ������� Window Spy�� �� â�� ���Ͽ� �����ִ� �Ͱ� �����մϴ�. �׷�����, DetectHiddenText�� ���� �ִٸ�, ���� �ؽ�Ʈ�� OutputVar�� ���Ե��� �ʽ��ϴ�.

�� �ؽ�Ʈ ���Ҵ� ij���� ���ϰ� �����ǵ� (CR+LF)�� �����ϴ�. ��ũ��Ʈ������ `r`n�� ǥ��˴ϴ�. �� ���̳� �ι��ڿ��� �����Ϸ���, StringGetPos �׸��� StringMid�� ���� ���ɾ ����Ͻʽÿ�. ȸ���� �Ľ��� ����ϸ� �� ���̳� �ܾ �ϳ��� ������ �� �ֽ��ϴ�.

������ �ؽ�Ʈ�� (�ҿ����ϰ�) �߷� ��Ÿ����, ���� VarSetCapacity(OutputVar, 55)�� ����� ���� WinGetText�� �õ��Ͻʽÿ� [�߷� ���� �ؽ�Ʈ���� �ξ� �� ū ũ��� 55�� ��ü�Ͻʽÿ�]. � ���ø����̼��� WM_GETTEXTLENGTH �޽����� �����ϰ� �������� �ʱ� ������, ������Ű�� ��� ������ �ʹ� �۰� ����� ��� �ؽ�Ʈ�� ���� ���ϱ� ������ �ʼ������� �̷��� ó���ؾ� �մϴ�.

������ �ؽ�Ʈ�� ���� ������ �ִ� ���� �ɷ¿� ������ �޽��ϴ� (#MaxMem ���þ ���Ͽ� �ٲ� �� �ֽ��ϴ�). ���������, �� ���ɾ�� ��ǥ â�� (��, ū ������ ���� �ִ� �����⿡) ����� ���� �ؽ�Ʈ�� �ִٸ� ����� ���� RAM�� ����� �� �ֽ��ϴ�. �̸� ���Ϸ���, â �ؽ�Ʈ�� �����͸� �����ϴ� �͵� �����մϴ�. ��ſ� ControlGetText�� ����Ͻʽÿ�. ��� ����, ������ �޸𸮴� ���߿� �ƹ��͵� �Ҵ����� ������ ������ �� �ֽ��ϴ�. ��, OutputVar =�̸� �޸𸮰� �����˴ϴ�.

â�� ��� ��Ʈ�� ����� �����Ϸ���, ���� ������ �����ʽÿ�: WinGet, OutputVar, ControlList, WinTitle

â ����� �ؽ�Ʈ�� ��ҹ��ڸ� �����մϴ�. ���� â�� DetectHiddenWindows�� ���� ������ Ž���˴ϴ�.

���� �׸�

ControlGetText, WinGetActiveStats, WinGetActiveTitle, WinGetTitle, WinGetPos, #MaxMem

����

Run, Calc.exe WinWait, Calculator WinGetText, text ; ������ �߰��� â�� ����մϴ�. MsgBox, The text is:`n%text%

Toplist

최신 우편물

태그