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