⚠ 이 강좌는 오토핫키 v1을 다룹니다
지금 보시는 강좌는 구버전 오토핫키(v1.1)를 다루고 있습니다. 따라서 본 강좌의 내용은 현재 최신 오토핫키 버전 (v2.0)과 호환되지 않습니다. 구버전의 정보가 필요한 것이 아니라면, 가능한 한 새로운 사이트에 작성한 v2 강좌(https://ahkv2.pnal.dev)를 봐주시길 바랍니다.
GUI부분이 끝났습니다. 기초적인 부분만 해서 성에 차지 않으실 수도 있겠네요. 이번 강부터는 문자열에 대해 다루어보려고 합니다.
InStr()
InStr()은 주어진 문자열 내에 특정 문자열이 있는지 검사합니다.
InStr(Haystack, Needle)
- Haystack: 특정 문자열이 찾아질 전체 문자열입니다.
- Needle: 찾을 문자열입니다.
InStr()의 반환값은 "찾은 문자열의 위치"입니다. 전체 문자열중에서 특정 문자열이 몇 번째 위치에 있는지 알아낼 때 중요합니다.
아래처럼 사용하시면 되겠네요.
Var := "동해물과 백두산이 마르고 닳도록"
MsgBox, % InStr(var, "백두산이")
→ 6이 출력될겁니다. (동, 해, 물, 과, (공백), "백", "두", "산", "이")
조건문과 결합하면, 주어진 문자열 내에 특정 문자열이 있는지 판단하는 구문을 만들 수 있습니다.
InStr()함수의 반환값은 말씀드렸다싶이 "찾은 문자열의 위치"이기 때문입니다! 만약 찾았다면 1 이상의 값이 나오겠지요.
Var := "동해물과 백두산이 마르고 닳도록"
if (InStr(var, "백두산이") > 0)
MsgBox, 포함되어있습니다.
else
MsgBox, 포함되어있지 않습니다.
2020.03.05 추가
InStr()구문은 과거 IfInString 명령어를 대체합니다. IfInString은 권장되는 명령어가 아니기 때문입니다.
비권장 명령어임에도 과거에 IfInString을 써두었는데, 이제서야 InStr()이라는 올바를 구문을 강좌합니다. (_ _)
StrLen()
StrLen()은 문자열의 길이를 반환해주는 함수입니다. 우리가 별도로 작성해주지 않아도, 오토핫키에 기본적으로 들어있는 함수이기 때문에 선언 없이 사용해주면 됩니다.
var := StrLen("안녕하세요")
MsgBox, %var%
"안녕하세요"는 5글자이기 때문에 5가 출력될 것입니다.
조금 고급지게 사용하려면 아래처럼 쓸 수도 있으니 참고해주세요.
MsgBox, % StrLen("안녕하세요")
결과는 역시 5입니다.
괄호 안엔 변수를 그냥 써주고, 문자열을 따옴표로 감싸준다고 했습니다. 아래처럼 변수를 사용해 줄 수도 있다는 뜻입니다.
var := "안녕하세요"
MsgBox, % StrLen(var)
< 61. 프로그래밍 문제 (14) | 62. If(Not)InString과 StrLen() | 63. SubStr() >