프날 오토핫키 강좌  v2

⚠ 이 강좌는 오토핫키 v2를 다룹니다

지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만, 새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.

8. 이스케이프 시퀀스


이번 강에서는 이스케이프 시퀀스(Escape Sequence)를 배우고 사용해 볼 것입니다.

이스케이프란?

프로그래밍에서 이스케이프(Escape)란 표현할 수 없는 문자나 기능을 표현하도록 하는 조치 혹은 행위를 의미합니다.

오토핫키에선 상황에 따라 표현할 수 없는 문자가 존재합니다. 예를 들어서, 앞서 배운 MsgBox를 사용할 때, 만약 문구에 따옴표가 들어가있으면 어떻게 해야할까요?

1MsgBox("철수가 영희에게 "야! 나 너 좋아한다"라고 말했습니다.")
문자열 안에 따옴표를 사용할 경우 (오류)

스크립트는 오류가 나며 실행되지 않습니다. 왜냐하면 따옴표는 작성한 코드가 문자열임을 나타내주는 하나의 기호인데, 문자열 중간에 따옴표가 들어간다면 이 따옴표로 인해 문자열 표시가 끝나기 때문이죠.

강좌를 아주 꼼꼼히 읽은 분들은 알고 계실지 모르겠지만, 제가 6강에서 스쳐지나가듯이 "따옴표는 큰 따옴표(")와 작은 따옴표(') 모두를 사용할 수 있다" 라고 언급한 적이 있습니다. 그렇다면 문자열을 작은 따옴표(')로 감싸준 후, 철수의 대사 부분을 큰 따옴표(")로 적어주는 방법이 있겠습니다. 아래와 같이 말이죠.

1MsgBox('철수가 영희에게 "야! 나 너 좋아한다"라고 말했습니다.')
문자열을 감싸는 따옴표를 작은 따옴표로 사용 철수가 영희에게 "나 너 좋아한다"라고 말했습니다 라고 적힌 알림 상자 사진 1. 실행 결과

정상적으로 큰 따옴표를 문자열로서 표현할 수 있네요. 그렇지만 여전히 문제는 있습니다. 만약 한 문장 내에 작은 따옴표와 큰 따옴표를 둘 다 사용하려면 어떡할까요? 지금처럼 문자열을 감싸는 따옴표를 바꾸는 것 만으로는 해결되지 않을 것입니다. 이럴 때 필요한 것이 이스케이프 처리입니다.

이스케이프 문자의 사용

이스케이프 처리를 하면 따옴표를 따옴표 그대로 표현할 수 있습니다. 또한, 어떠한 표현 불가능한 문자도 표현하게 해주죠. 이러한 이스케이프 처리는 이스케이프 문자이스케이프 할 문자 앞에 붙여줌으로써 가능하게 합니다.

오토핫키에서 이스케이프 문자는 `입니다. 영미권에서 백틱(Backtick)이라고 불리는 이 기호는 대부분 키보드의 ESC키 아래에 있습니다. ~를 입력할 때 Shift키를 떼고 입력하면 바로 `가 입력되죠. 여러분 중 대부분은 처음 입력해본 문자일수도 있겠습니다만, 오토핫키에선 이스케이프 문자로 자주 쓰입니다.

이러한 이스케이프 문자를, 이스케이프할 문자 앞에 붙여주면 끝입니다. 앞선 예제에선 따옴표 앞에 붙여주면 되겠죠. 아래와 같이 말입니다.

1MsgBox("철수가 영희에게 `"야! 나 너 좋아한다`"라고 말했습니다.")
따옴표를 이스케이프 처리 철수가 영희에게 "나 너 좋아한다"라고 말했습니다 라고 적힌 알림 상자 사진 2. 실행 결과

과연 이스케이프 처리를 하니 따옴표를 표현할 수 있습니다! 이렇게 이스케이프 처리를 하면 표현할 수 없는 문자를 표현할 수 있습니다. (" 또는 ' 처럼)문법적으로 사용되는 문자를 문자 그대로의 의미로 사용할 수 있게 해주죠.

이스케이프 시퀀스

그렇다면 강좌 제목인 이스케이프 시퀀스는 무엇일까요? 바로 이스케이프 문자 + 이스케이프할 문자로 이루어진 문자열을 의미합니다. 앞선 예제의 `" 같은 것이지요.

오토핫키에선 `"를 포함해 몇 가지 이스케이프 시퀀스가 있습니다. 대표적으로 알아보자면 표와 같습니다.

이스케이프 시퀀스설명
`" 또는 `'각각 큰 따옴표(")와 작은 따옴표(')를 표현합니다.
`n줄바꿈을 표현합니다.
`t수평 탭을 표현합니다.

Tip: 이스케이프 시퀀스는 더 많습니다.

사실 소개드린 네 가지 외에도 이스케이프 시퀀스는 많습니다. 그러나 외울 필요는 없습니다. 그저 여러분들이 '어? 이 상황에 이 문자를 쓰면 오류가 나는데?' 싶을 때, 그 문자를 이스케이프 처리를 해주면 됩니다. 그 밖에 `n 정도는 외우면 좋습니다.

실습

1. 따옴표와 줄바꿈 표시

1MsgBox("`"닭 잡는 데 어찌 소 잡는 칼을 쓰려 하십니까?`"`n- 화웅")
예제 1. 따옴표와 줄바꿈을 표현하는 이스케이프 시퀀스 사용 "닭 잡는데 어찌 소 잡는 칼을 사용하십니까?"라는 문장의 한 줄 밑에서 - 화웅 이라고 적힌 알림 상자 사진 3. 실행 결과

`"로 따옴표를 표현해주었고, `n으로 줄 바꿈을 표현해주었습니다.

질문하러 가기