[C#] StringBuilder AppendLine 한 다음에 마지막에 TrimEnd NewLine 하는 방법?

C#에서 StringBuilder.AppendLine을 사용한 후 마지막에 추가된 줄바꿈(Newline)을 제거하려면 몇 가지 방법을 사용할 수 있어요.

방법 1: Remove 메서드 사용

StringBuilderRemove 메서드를 이용해 마지막 문자를 삭제하세요.

using System.Text;

StringBuilder sb = new StringBuilder();
sb.AppendLine("첫 번째 줄");
sb.AppendLine("두 번째 줄");

// 마지막 줄바꿈 제거
if (sb.Length > 0)
{
    sb.Remove(sb.Length - Environment.NewLine.Length, Environment.NewLine.Length);
}

Console.WriteLine(sb.ToString());
  • Environment.NewLine.Length를 이용하면 OS에 따라 다른 줄바꿈 길이(\n 또는 \r\n)를 자동으로 처리합니다.
  • 마지막 줄바꿈이 반드시 있다고 보장되지 않는 경우, sb.Length를 체크하여 예외를 방지하세요.

방법 2: TrimEndToString 사용

StringBuilder의 내용을 문자열로 변환한 뒤, TrimEnd를 사용해 공백과 줄바꿈을 제거합니다.

using System.Text;

StringBuilder sb = new StringBuilder();
sb.AppendLine("첫 번째 줄");
sb.AppendLine("두 번째 줄");

// 문자열 변환 후 줄바꿈 제거
string result = sb.ToString().TrimEnd('\r', '\n');

Console.WriteLine(result);
  • TrimEnd는 문자열 끝에 있는 특정 문자들을 제거합니다.
  • 결과를 문자열로 변환해야 하므로 StringBuilder 자체를 바로 수정하지는 않습니다.

방법 3: 커스텀 메서드 사용

추가적으로 AppendLine 호출과 마지막 줄바꿈 제거 작업을 자주 반복해야 한다면, 별도의 헬퍼 메서드를 만들어 관리하는 것도 좋습니다.

public static class StringBuilderExtensions
{
    public static void AppendLineWithoutTrailingNewline(StringBuilder sb, string text)
    {
        if (!string.IsNullOrEmpty(text))
        {
            sb.AppendLine(text);
        }
    }

    public static string ToStringWithoutTrailingNewline(StringBuilder sb)
    {
        return sb.ToString().TrimEnd('\r', '\n');
    }
}

// 사용 예
StringBuilder sb = new StringBuilder();
StringBuilderExtensions.AppendLineWithoutTrailingNewline(sb, "첫 번째 줄");
StringBuilderExtensions.AppendLineWithoutTrailingNewline(sb, "두 번째 줄");

Console.WriteLine(StringBuilderExtensions.ToStringWithoutTrailingNewline(sb));
  • 이 방식은 재사용성이 높아 코드의 가독성을 높입니다.

선택 기준

  1. 성능 우선: Remove 사용.
  2. 간단한 코드: TrimEnd 사용.
  3. 재사용성: 확장 메서드 정의.

위 방법 중 상황에 맞는 것을 선택해 사용하세요!

이전최근
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗