C#에서 이스케이프 문자(Escape Character)는 탭, 줄 바꿈, 벨 소리처럼 키보드로 직접 입력하기 어려운 특수 문자를 표현할 때 사용합니다. 역슬래시(\) 뒤에 특정 문자를 조합하여 작성하며, 특히 정규식(Regular Expression)에서 제어 문자를 다룰 때 유용하게 활용됩니다.
아래 표는 C#에서 사용할 수 있는 대표적인 이스케이프 문자와 각각의 설명, 그리고 실제 화면에 어떻게 표시되는지를 정리한 것입니다.
| 이스케이프 문자 | 설명 | 패턴 | 표시 결과 |
|---|---|---|---|
| \a | 벨(Bell) 문자 \u0007과 일치합니다. | \a | "Warning!" + '\u0007' 에서 "\u0007" |
| \b | 문자 클래스 안에서 백스페이스(\u0008)와 일치합니다. | [\b]{3} | "\b\b\b\b" 에서 "\b\b\b\b" |
| \t | 탭(Tab, \u0009)과 일치합니다. | (\w+)\t | "Name\tAddr\t" 에서 "Name\t", "Addr\t" |
| \r | 캐리지 리턴(Carriage Return, \u000D)과 일치합니다. 단, \r은 줄 바꿈 문자인 \n과 동일하지 않습니다. | \r\n(\w+) | "\r\Hello\nWorld." 에서 "\r\nHello" |
| \v | 세로 탭(Vertical Tab, \u000B)과 일치합니다. | [\v]{2} | "\v\v\v" 에서 "\v\v\v" |
| \f | 폼 피드(Form Feed, \u000C)와 일치합니다. | [\f]{2} | "\f\f\f" 에서 "\f\f\f" |
| \n | 새 줄(New Line, \u000A)과 일치합니다. | \r\n(\w+) | "\r\Hello\nWorld." 에서 "\r\nHello" |
| \e | 이스케이프(Escape, \u001B) 문자와 일치합니다. | \e | "\x001B" 에서 "\x001B" |
| \nnn | 8진수 표기법으로 문자를 지정합니다. (nnn은 최대 3자리 숫자) | \w\040\w | "a bc d" 에서 "a b", "c d" |
| \x nn | 16진수 표기법으로 문자를 지정합니다. (nn은 반드시 2자리 숫자) | \w\x20\w | "a b", "c d" |
| \c X / \c x | X 또는 x로 지정된 ASCII 제어 문자와 일치합니다. (X 또는 x는 제어 문자를 나타내는 영문자) | \cC | "\x0003" 에서 "\x0003" (Ctrl-C) |
| \u nnnn | 16진수 표기법으로 유니코드 문자와 일치합니다. (nnnn은 반드시 4자리 숫자) | \w\u0020\w | "a bc d" 에서 "a b", "c d" |
| \ | 뒤에 오는 문자가 이스케이프 문자로 인식되지 않는 경우, 해당 문자 그대로와 일치합니다. | \d+[\+-x\*]\d+ | "(2+2) * 3*9" 에서 "2+2", "3*9" |
C# 이스케이프 문자 출력 예제
다음 예제는 위에서 소개한 이스케이프 문자 중 몇 가지를 C# 코드에서 직접 사용하고 출력하는 방법을 보여줍니다.
using System;
using System.Collections.Generic;
class Demo {
static void Main() {
Console.WriteLine("Warning!" + '\u0007');
Console.WriteLine("Demo Text \t Demo Text");
Console.WriteLine("This is it!\nThis is on the next line!");
}
}실행 결과
Warning! Demo Text Demo Text This is it! This is on the next line!
예제 코드 설명
- '\u0007': 벨 문자를 출력하여 경고음을 발생시킵니다.
- \t: 두 문장 사이에 탭 간격을 삽입합니다.
- \n: 줄 바꿈을 수행하여 이후 문장을 다음 줄에 출력합니다.
이처럼 이스케이프 문자를 활용하면 콘솔 출력의 가독성을 높이고, 정규식에서도 제어 문자를 정확하게 매칭할 수 있습니다.