Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# StringBuilder.ToString() 메서드 완벽 정리 – 문자열 변환 방법과 예제

C#의 StringBuilder.ToString() 메서드는 StringBuilder 객체에 저장된 값을 문자열(String)로 변환하는 데 사용됩니다. StringBuilder는 내부적으로 가변(mutable) 문자 버퍼를 사용하므로, 작업이 끝난 후 최종 결과를 불변(immutable)인 문자열로 얻고 싶을 때 이 메서드가 필수적입니다.

문법(Syntax)

ToString() 메서드에는 두 가지 오버로드가 존재합니다.

public override string ToString ();
public string ToString (int begnIndex, int len);

각 매개변수의 의미는 다음과 같습니다.

  • begnIndex: 이 인스턴스에서 부분 문자열이 시작되는 위치(인덱스)
  • len: 추출할 부분 문자열의 길이

첫 번째 오버로드는 매개변수 없이 호출하여 StringBuilder의 전체 내용을 문자열로 반환하고, 두 번째 오버로드는 지정한 시작 위치부터 지정한 길이만큼의 부분 문자열만 추출하여 반환합니다.

예제 1: ToString() 기본 사용법

다음 예제에서는 ToString() 메서드로 StringBuilder의 값을 출력하는 방법을 살펴봅니다.

using System;
using System.Text;
public class Demo{
    public static void Main(){
        StringBuilder strBuilder = new StringBuilder("Katie");
        Console.WriteLine("String = "+strBuilder.ToString());
        Console.WriteLine("\nStringBuilder capacity = "+strBuilder.Capacity);
        Console.WriteLine("StringBuilder length = "+strBuilder.Length);
        strBuilder.EnsureCapacity(35);
        Console.WriteLine("\nStringBuilder capacity= "+strBuilder.Capacity);
        Console.WriteLine("StringBuilder length = "+strBuilder.Length);
        strBuilder.EnsureCapacity(0);
        strBuilder.Length = 0;
        Console.WriteLine("\nStringBuilder capacity= "+strBuilder.Capacity);
        Console.WriteLine("StringBuilder length = "+strBuilder.Length);
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

String = Katie
StringBuilder capacity = 16
StringBuilder length = 5
StringBuilder capacity= 35
StringBuilder length = 5
StringBuilder capacity= 35
StringBuilder length = 0

출력 결과에서 확인할 수 있듯이, EnsureCapacity(35)를 호출하면 용량(capacity)이 35로 늘어나지만 실제 문자열 길이(length)는 그대로 유지됩니다. 또한 Length 속성을 0으로 설정하면 내용은 비워지지만 용량은 줄어들지 않습니다.

예제 2: ToString(int, int)으로 부분 문자열 추출하기

이번에는 시작 인덱스와 길이를 지정하여 StringBuilder의 일부분만 문자열로 변환하는 예제입니다.

using System;
using System.Text;
public class Demo{
    public static void Main(){
        StringBuilder strBuilder = new StringBuilder("TomHanks");
        Console.WriteLine("StringBuilder = "+strBuilder.ToString());
        Console.WriteLine("String = "+strBuilder.ToString(3, 5));
        Console.WriteLine("\nStringBuilder capacity = "+strBuilder.Capacity);
        Console.WriteLine("StringBuilder length = "+strBuilder.Length);
        strBuilder.EnsureCapacity(35);
        Console.WriteLine("\nStringBuilder capacity= "+strBuilder.Capacity);
        Console.WriteLine("StringBuilder length = "+strBuilder.Length);
        strBuilder.EnsureCapacity(0);
        strBuilder.Length = 0;
        Console.WriteLine("\nStringBuilder capacity= "+strBuilder.Capacity);
        Console.WriteLine("StringBuilder length = "+strBuilder.Length);
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

StringBuilder = TomHanks
String = Hanks
StringBuilder capacity = 16
StringBuilder length = 8
StringBuilder capacity= 35
StringBuilder length = 8
StringBuilder capacity= 35
StringBuilder length = 0

ToString(3, 5)는 인덱스 3에서 시작하여 5개의 문자를 추출하므로 "TomHanks"에서 "Hanks"가 반환됩니다. 이처럼 매개변수가 있는 ToString() 오버로드를 활용하면 Substring()과 유사하게 원하는 구간의 문자열만 손쉽게 얻을 수 있습니다.

정리

  • ToString(): StringBuilder의 전체 내용을 문자열로 변환
  • ToString(int begnIndex, int len): 지정한 위치부터 지정한 길이만큼의 부분 문자열을 반환
  • EnsureCapacity()는 용량만 늘리며 문자열 길이에는 영향을 주지 않음
  • Length 속성을 0으로 설정하면 내용이 초기화되지만 용량은 유지됨