GUI부분이 끝났습니다. 기초적인 부분만 해서 성에 차지 않으실 수도 있겠네요. 이번 강부터는 문자열에 대해 다루어보려고 합니다.

 


 InStr() 

InStr()은 주어진 문자열 내에 특정 문자열이 있는지 검사합니다.

InStr(Haystack, Needle)
  • Haystack: 특정 문자열이 찾아질 전체 문자열입니다.
  • Needle: 찾을 문자열입니다.

InStr()의 반환값은 "찾은 문자열의 위치"입니다. 전체 문자열중에서 특정 문자열이 몇 번째 위치에 있는지 알아낼 때 중요합니다.

 

아래처럼 사용하시면 되겠네요.

Var := "동해물과 백두산이 마르고 닳도록"
MsgBox, % InStr(var, "백두산이")

→ 6이 출력될겁니다. (동, 해, 물, 과, (공백), "백", "두", "산", "이")

62강 1.ahk
0.00MB

조건문과 결합하면, 주어진 문자열 내에 특정 문자열이 있는지 판단하는 구문을 만들 수 있습니다.

InStr()함수의 반환값은 말씀드렸다싶이 "찾은 문자열의 위치"이기 때문입니다! 만약 찾았다면 1 이상의 값이 나오겠지요.

Var := "동해물과 백두산이 마르고 닳도록"
if (InStr(var, "백두산이") > 0)
    MsgBox, 포함되어있습니다.
else
    MsgBox, 포함되어있지 않습니다.

 

62강 2.ahk
0.00MB

 

2020.03.05 추가

 

InStr()구문은 과거 IfInString 명령어를 대체합니다. IfInString은 권장되는 명령어가 아니기 때문입니다.

비권장 명령어임에도 과거에 IfInString을 써두었는데, 이제서야 InStr()이라는 올바를 구문을 강좌합니다. (_ _)


 StrLen() 

StrLen()은 문자열의 길이를 반환해주는 함수입니다. 우리가 별도로 작성해주지 않아도, 오토핫키에 기본적으로 들어있는 함수이기 때문에 선언 없이 사용해주면 됩니다.

 

var := StrLen("안녕하세요")
MsgBox, %var%

62강 3.ahk
0.00MB

"안녕하세요"는 5글자이기 때문에 5가 출력될 것입니다.

 

조금 고급지게 사용하려면 아래처럼 쓸 수도 있으니 참고해주세요.

MsgBox, % StrLen("안녕하세요")

결과는 역시 5입니다.

 

괄호 안엔 변수를 그냥 써주고, 문자열을 따옴표로 감싸준다고 했습니다. 아래처럼 변수를 사용해 줄 수도 있다는 뜻입니다.

var := "안녕하세요"
MsgBox, % StrLen(var)

62강 4.ahk
0.00MB

 


| 62. If(Not)InString과 StrLen() |