C# 13: \e (새 Escape Sequence)
C# 13에서 \e 라는 새로운 이스케이프(ESC) 시퀀스가 추가되었다.
\e는 ASCII Escape 문자를 표현한 것인데, 이전에는 아스키 \x1b (0x1b) 혹은 유니코드 \u001b (U+001b) 등을 써서 표현하였다.
그런데 \x1b 와 같이 표현하는 것은 약간의 문제를 야기할 수 있었는데, \x는 뒤에 오는 데이타에 따라 최대 4자리까지의 16진수를 가져올 수 있었다.
예를 들어, \x1b[31m 와 같이 쓰면, 원래 의도는 0x1b, '[', '3', '1', 'm' 와 같이 5개의 문자로 해석되어야 하는데,
실제로는 \x1b[31m 전체가 (C/C++의 전통에 따라 '['과 'm'을 생략하고) 0x1b31과 같이 하나의 16진수로 해석되어 버리는 문제가 있었다.
따라서 이러한 혼돈을 피하기 위해 C# 13에서는 \e 라는 별도의 이스케이프 시퀀스를 도입하여, \e는 항상 ASCII Escape 문자 (0x1b)로 해석되도록 하였다.
아래는 C# 13의 \e ANSI Escape 시퀀스를 사용한 예제인데, 콘솔에서 텍스트 색상을 변경하는 ANSI Escape 시퀀스를 표현한 것이다.
많은 콘솔 터미널 (Windows Terminal, macOS Terminal, Linux bash 등)은 ANSI Escape Code라는 제어 문자를 특별하게 해석하는데,
예를 들어 \e [ 31 m 은 텍스트 색상을 빨간색으로 바꾸는 시퀀스이다.
몇가지 색성 코드는 다음과 같다: \e[30m (검정), \e[31m (빨강), \e[32m (초록), \e[33m (노랑), \e[34m (파랑), \e[35m (보라), \e[36m (청록), \e[37m (흰색).
예제
public class Program
{
public static void Main()
{
string esc = "\e";
// ANSI 이스케이프 시퀀스를 사용하여 텍스트 색상을 변경
// \e[31m은 빨간색 텍스트를 나타내고, \e[0m은 색상 리셋으로 원래 색상으로 복원함.
// 콘솔에 빨간색 "RED" 텍스트를 출력
Console.WriteLine($"{esc}[31mRED{esc}[0m");
// 콘솔에 파랜색 텍스트를 출력
Console.WriteLine($"{esc}[34m BLUE {esc}[0m");
}
}
본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.