⚠ 이 강좌는 오토핫키 v2를 다룹니다
지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만,
새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.
8. 이스케이프 시퀀스
마지막 수정일: 2023-12-22
이번 강에서는 이스케이프 시퀀스(Escape Sequence)를 배우고 사용해 볼 것입니다.
이스케이프란?
프로그래밍에서 이스케이프(Escape)란 표현할 수 없는 문자나 기능을 표현하도록 하는 조치 혹은 행위를 의미합니다.
오토핫키에선 상황에 따라 표현할 수 없는 문자가 존재합니다. 예를 들어서, 앞서 배운 MsgBox
를 사용할 때,
만약 문구에 따옴표가 들어가있으면 어떻게 해야할까요?
1 MsgBox("철수가 영희에게 "야! 나 너 좋아한다"라고 말했습니다.")
스크립트는 오류가 나며 실행되지 않습니다. 왜냐하면 따옴표는 작성한 코드가 문자열임을 나타내주는 하나의 기호인데, 문자열 중간에 따옴표가 들어간다면 이 따옴표로 인해 문자열 표시가 끝나기 때문이죠.
강좌를 아주 꼼꼼히 읽은 분들은 알고 계실지 모르겠지만, 제가 6강에서 스쳐지나가듯이 "따옴표는 큰 따옴표(")와 작은 따옴표(') 모두를 사용할 수 있다" 라고 언급한 적이 있습니다. 그렇다면 문자열을 작은 따옴표(')로 감싸준 후, 철수의 대사 부분을 큰 따옴표(")로 적어주는 방법이 있겠습니다. 아래와 같이 말이죠.
1 MsgBox('철수가 영희에게 "야! 나 너 좋아한다"라고 말했습니다.')
정상적으로 큰 따옴표를 문자열로서 표현할 수 있네요. 그렇지만 여전히 문제는 있습니다. 만약 한 문장 내에 작은 따옴표와 큰 따옴표를 둘 다 사용하려면 어떡할까요? 지금처럼 문자열을 감싸는 따옴표를 바꾸는 것 만으로는 해결되지 않을 것입니다. 이럴 때 필요한 것이 이스케이프 처리입니다.
이스케이프 문자의 사용
이스케이프 처리를 하면 따옴표를 따옴표 그대로 표현할 수 있습니다. 또한, 어떠한 표현 불가능한 문자도 표현하게 해주죠. 이러한 이스케이프 처리는 이스케이프 문자를 이스케이프 할 문자 앞에 붙여줌으로써 가능하게 합니다.
오토핫키에서 이스케이프 문자는 `
입니다.
영미권에서 백틱(Backtick)
이라고 불리는 이 기호는 대부분 키보드의 ESC
키 아래에 있습니다.
~
를 입력할 때 Shift
키를 떼고 입력하면 바로 `
가 입력되죠.
여러분 중 대부분은 처음 입력해본 문자일수도 있겠습니다만, 오토핫키에선 이스케이프 문자로 자주 쓰입니다.
이러한 이스케이프 문자를, 이스케이프할 문자 앞에 붙여주면 끝입니다. 앞선 예제에선 따옴표 앞에 붙여주면 되겠죠. 아래와 같이 말입니다.
1 MsgBox("철수가 영희에게 `"야! 나 너 좋아한다`"라고 말했습니다.")
과연 이스케이프 처리를 하니 따옴표를 표현할 수 있습니다! 이렇게 이스케이프 처리를 하면 표현할 수 없는 문자를 표현할 수 있습니다.
("
또는 '
처럼)문법적으로 사용되는 문자를 문자 그대로의 의미로 사용할 수 있게 해주죠.
이스케이프 시퀀스
그렇다면 강좌 제목인 이스케이프 시퀀스
는 무엇일까요? 바로 이스케이프 문자 + 이스케이프할 문자
로 이루어진 문자열을 의미합니다.
앞선 예제의 `"
같은 것이지요.
오토핫키에선 `"
를 포함해 몇 가지 이스케이프 시퀀스가 있습니다. 대표적으로 알아보자면 표와 같습니다.
이스케이프 시퀀스 | 설명 |
---|---|
`" 또는 `' | 각각 큰 따옴표(")와 작은 따옴표(')를 표현합니다. |
`n | 줄바꿈을 표현합니다. |
`t | 수평 탭을 표현합니다. |
Tip: 이스케이프 시퀀스는 더 많습니다.
사실 소개드린 네 가지 외에도 이스케이프 시퀀스는 많습니다. 그러나 외울 필요는 없습니다. 그저
여러분들이 '어? 이 상황에 이 문자를 쓰면 오류가 나는데?' 싶을 때, 그 문자를 이스케이프 처리를 해주면 됩니다.
그 밖에 `n
정도는 외우면 좋습니다.
실습
1. 따옴표와 줄바꿈 표시
1 MsgBox("`"닭 잡는 데 어찌 소 잡는 칼을 쓰려 하십니까?`"`n- 화웅")
`"
로 따옴표를 표현해주었고, `n
으로 줄 바꿈을 표현해주었습니다.