HOWTO · Csharp

C#의 캐리지 리턴

이 기사에서는 C#의 문자열에서 캐리지 리턴을 배웁니다.

이 페이지의 내용

C#에서 콘솔에 출력할 때는 Console.WriteLine()을, 문자열 안에 줄 바꿈 문자가 필요할 때는 \n을, 현재 플랫폼에 맞는 텍스트를 만들 때는 Environment.NewLine을 사용하세요. 캐리지 리턴(\r)과 줄 바꿈 문자(\n)는 서로 다른 제어 문자이므로 파일 형식이나 수신 시스템이 요구하는 시퀀스를 사용해야 합니다.

Console.WriteLine()으로 한 줄 또는 빈 줄 출력하기

Console.WriteLine(value)는 값을 출력한 뒤 콘솔의 줄 끝 문자를 덧붙입니다. 매개변수 없이 호출하면 줄 끝 문자만 출력하므로 앞뒤 텍스트 사이에 빈 줄이 생깁니다. 줄 끝 문자는 출력 시점에 추가되며 메서드에 전달한 문자열 자체를 바꾸지는 않습니다.

다음 예제를 실행해 보세요.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("First line");
        Console.WriteLine();
        Console.WriteLine("Second line");
    }
}
First line

Second line

C# 문자열 안에 \n 넣기

일반 C# 문자열 리터럴에서 \n은 줄 바꿈 문자(line feed)를 나타내는 이스케이프 시퀀스입니다. 줄을 나눌 위치에 넣으면 됩니다. 컴파일러는 백슬래시와 n이라는 두 문자가 아니라 해당 제어 문자를 저장합니다. 직접 제어하는 텍스트에 편리한 방법입니다. \x0A도 같은 문자를 나타내지만, 보통은 \n이 더 알아보기 쉽습니다. 축자 문자열에서는 이스케이프 시퀀스를 해석하지 않으므로 이 방식에는 일반 문자열 리터럴을 사용하세요.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

using System;

class Program
{
    static void Main()
    {
        string message = "First line\nSecond line";
        Console.WriteLine(message);
    }
}
First line
Second line

플랫폼의 줄 바꿈에 Environment.NewLine 사용하기

문자열을 만들 때 줄 구분자가 현재 환경을 따르도록 하려면 Environment.NewLine을 사용하세요. 이 값은 해당 환경의 줄 바꿈 시퀀스를 제공합니다. 플랫폼 관례에 맞춰 작성하는 텍스트 파일이나 조합한 메시지에 유용하지만, 모든 프로토콜에서 텍스트를 사용할 수 있게 해 주는 것은 아닙니다. HTTP, CSV 형식, 원격 서비스 등은 자체 줄 끝 규칙을 지정할 수 있습니다. Console.WriteLine()은 출력할 때 별도로 줄 끝 문자를 덧붙입니다. 따라서 문자열에 Environment.NewLine을 넣은 뒤 WriteLine()을 호출하면 끝에 줄 바꿈이 하나 더 생길 수 있습니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

using System;

class Program
{
    static void Main()
    {
        string message = "First line" + Environment.NewLine + "Second line";
        Console.WriteLine(message);
    }
}
First line
Second line

의미에 따라 \n, \r, \r\n 또는 \x0A 선택하기

\n은 줄 바꿈 문자(line feed, LF)이고 \r은 캐리지 리턴(carriage return, CR)입니다. 역사적으로 CR은 줄의 시작 위치로 돌아가고 LF는 다음 줄로 이동하는 문자였습니다. 텍스트 시스템은 흔히 LF만으로 줄을 구분하지만, Windows 텍스트에서는 관례적으로 CRLF(\r\n)를 사용합니다. 이전 시스템 중에는 CR만 사용한 경우도 있습니다. 이는 관례일 뿐 서로 바꿔 쓸 수 있는 표기가 아닙니다. 특히 프로토콜이나 파일 형식에 쓸 때는 대상이 요구하는 표현을 선택하세요. C# 문자열 리터럴에서 \x0A는 \n과 같은 LF 문자를 나타냅니다. 일반적인 줄 바꿈에는 더 명확한 \n을 사용하는 편이 좋습니다. 플랫폼 관례가 의도한 형식일 때만 Environment.NewLine을 사용하세요.

ASP.NET에서 C# 줄 바꿈을 HTML <br>로 변환하기

줄 바꿈이 포함된 텍스트를 HTML로 표시하려면 먼저 텍스트를 HTML 인코딩한 다음 줄 바꿈 시퀀스를 <br>로 바꾸세요. Windows 줄 끝 하나가 HTML 줄 바꿈 하나가 되도록 CRLF를 단독 CR 또는 LF보다 먼저 처리해야 합니다. 예제는 고정된 샘플 텍스트만 사용합니다. 요청이나 사용자가 제공한 텍스트를 처리할 때는 마크업 삽입을 막기 위해 인코딩 단계를 유지하세요. ASP.NET에서는 대상 뷰 기술에 맞는 프레임워크의 일반적인 출력 인코딩 기능을 우선 사용하세요.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

using System;
using System.Net;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string input = "First line\r\nSecond <line>";
        string encoded = WebUtility.HtmlEncode(input);
        string html = Regex.Replace(encoded, @"\r\n|\r|\n", "<br>");
        Console.WriteLine(html);
    }
}
First line<br>Second &lt;line&gt;