StringBuilder 클래스 사용

String 개체는 변경할 수 없습니다. System.String 클래스의 메서드 중 하나를 사용할 때마다 공간을 새로 할당해야 하는 새 문자열 개체가 메모리에 생성됩니다. 문자열을 반복적으로 수정해야 하는 경우에는 String 개체를 새로 만드는 작업으로 인한 오버헤드가 클 수도 있습니다. 개체를 새로 만들지 않고 문자열을 수정하려면 System.Text.StringBuilder 클래스를 사용합니다. 예를 들어, StringBuilder 클래스를 사용하면 많은 문자열을 루프에서 연결함으로써 성능을 높일 수 있습니다.

StringBuilder 개체 인스턴스화

다음 예제와 같이 오버로드된 생성자 메서드 중 하나로 변수를 초기화하여 StringBuilder 클래스의 새 인스턴스를 만들 수 있습니다.

Dim MyStringBuilder As New StringBuilder("Hello World!")
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");

용량 및 길이 설정

StringBuilder는 캡슐화하는 문자열의 문자 수를 확장할 수 있는 동적 개체지만, 필요하면 개체가 가질 수 있는 문자의 최대수를 값으로 지정할 수도 있습니다. 이 값을 개체의 용량이라고 하며, 용량은 현재 StringBuilder에 있는 문자열의 길이와는 다릅니다. 예를 들어, StringBuilder 클래스의 새 인스턴스를 만들어 길이가 5인 "Hello"라는 문자열을 할당하고 개체의 최대 용량을 25로 지정할 수 있습니다. 그러면 이 용량에 도달하기 전에는 StringBuilder를 수정할 때 크기가 다시 할당되지 않습니다. 이 용량에 도달하면 새로운 공간이 자동으로 할당되고 용량이 두 배로 늘어납니다. 오버로드된 생성자 중 하나를 사용하여 StringBuilder 클래스의 용량을 지정할 수 있습니다. 다음 예제에서는 길이가 최대 25까지 확장될 수 있는 MyStringBuilder 개체를 지정합니다.

Dim MyStringBuilder As New StringBuilder("Hello World!", 25) 
StringBuilder MyStringBuilder = new StringBuilder("Hello World!", 25);  
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!", 25);

또한 읽기/쓰기Capacity 속성을 사용하여 개체의 최대 길이를 설정할 수도 있습니다. 다음 예제에서는 Capacity 속성을 사용하여 개체의 최대 길이를 정의합니다.

MyStringBuilder.Capacity = 25
MyStringBuilder.Capacity = 25;
MyStringBuilder->Capacity = 25;

EnsureCapacity 메서드를 사용하여 현재 StringBuilder의 용량을 확인할 수 있습니다. 전달된 값보다 용량이 크면 용량이 변경되지 않지만, 전달된 값보다 용량이 작으면 전달된 값과 일치하도록 현재 용량이 변경됩니다.

Length 속성을 보거나 설정할 수도 있습니다. Length 속성을 Capacity 속성보다 큰 값으로 설정하면 Capacity 속성이 Length 속성과 같은 값으로 자동 변경됩니다. Length 속성을 현재 StringBuilder 안에 있는 문자열 길이보다 작은 값으로 설정하면 문자열이 잘립니다.

StringBuilder 문자열 수정

다음 표에는 StringBuilder의 내용을 수정하는 데 사용할 수 있는 메서드가 나와 있습니다.

메서드 이름

사용할 도구

StringBuilder.Append

현재 StringBuilder의 끝에 정보를 추가합니다.

StringBuilder.AppendFormat

문자열에 전달된 서식 지정자를 서식 지정된 텍스트로 바꿉니다.

StringBuilder.Insert

문자열 또는 개체를 현재 StringBuilder의 지정된 인덱스 위치에 삽입합니다.

StringBuilder.Remove

현재 StringBuilder에서 지정된 수만큼의 문자를 제거합니다.

StringBuilder.Replace

지정한 인덱스에 있는 지정한 문자를 바꿉니다.

Append

Append 메서드를 사용하여 개체의 텍스트 또는 문자열 표시를 현재 StringBuilder에서 표시하는 문자열의 끝에 추가할 수 있습니다. 다음 예제에서는 StringBuilder를 "Hello World"로 초기화한 다음 개체의 끝에 약간의 텍스트를 추가합니다. 필요한 만큼 공간이 자동으로 할당됩니다.

Dim MyStringBuilder As New StringBuilder("Hello World!")
MyStringBuilder.Append(" What a beautiful day.")
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'       Hello World! What a beautiful day.
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Append(" What a beautiful day.");
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello World! What a beautiful day.
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");
MyStringBuilder->Append(" What a beautiful day.");
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello World! What a beautiful day.

AppendFormat

StringBuilder.AppendFormat 메서드는 StringBuilder 개체의 끝에 텍스트를 추가합니다. 이 메서드는 서식을 지정할 개체의 IFormattable 구현을 호출하여 합성 서식 지정 기능(합성 형식 지정 참조)을 지원합니다. 따라서 이 메서드는 숫자, 날짜/시간 및 열거형 값에 대한 표준 형식 문자열, 숫자 및 날짜/시간 값에 대한 사용자 지정 형식 문자열, 그리고 사용자 지정 형식에 대해 정의된 형식 문자열을 허용합니다. 서식 지정에 대한 자세한 내용은 형식 서식 지정을 참조하십시오. 이 메서드를 사용하여 변수의 형식을 사용자 지정한 다음 변수의 값을 StringBuilder에 추가할 수 있습니다. 다음 예제에서는 AppendFormat 메서드를 사용하여 통화 값으로 서식 지정된 정수 값을 StringBuilder 개체의 끝에 삽입합니다.

Dim MyInt As Integer = 25
Dim MyStringBuilder As New StringBuilder("Your total is ")
MyStringBuilder.AppendFormat("{0:C} ", MyInt)
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'     Your total is $25.00  
int MyInt = 25; 
StringBuilder MyStringBuilder = new StringBuilder("Your total is ");
MyStringBuilder.AppendFormat("{0:C} ", MyInt);
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Your total is $25.00      
int MyInt = 25;
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Your total is ");
MyStringBuilder->AppendFormat("{0:C} ", MyInt);
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Your total is $25.00

Insert

Insert 메서드는 현재 StringBuilder 개체의 지정된 위치에 문자열이나 개체를 추가합니다. 다음 예제에서는 이 메서드를 사용하여 StringBuilder 개체의 여섯 번째 위치에 단어를 삽입합니다.

Dim MyStringBuilder As New StringBuilder("Hello World!")
MyStringBuilder.Insert(6, "Beautiful ")
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'      Hello Beautiful World!
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello Beautiful World!
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");
MyStringBuilder->Insert(6,"Beautiful ");
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello Beautiful World!

Remove

Remove 메서드를 사용하면 0에서 시작하는 인덱스로 지정한 위치에서 시작하여 지정한 수만큼의 문자를 현재 StringBuilder 개체에서 제거할 수 있습니다. 다음 예제에서는 Remove 메서드를 사용하여 StringBuilder 개체의 길이를 줄입니다.

Dim MyStringBuilder As New StringBuilder("Hello World!")
MyStringBuilder.Remove(5, 7)
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'       Hello
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Remove(5,7);
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");
MyStringBuilder->Remove(5,7);
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello

Replace

Replace 메서드를 사용하면 StringBuilder 개체의 문자를 지정된 다른 문자로 바꿀 수 있습니다. 다음 예제에서는 Replace 메서드를 사용하여 StringBuilder 개체에서 느낌표(!)를 모두 찾아 이를 물음표(?)로 바꿉니다.

Dim MyStringBuilder As New StringBuilder("Hello World!")
MyStringBuilder.Replace("!"c, "?"c)
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'       Hello World?
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Replace('!', '?');
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello World?
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");
MyStringBuilder->Replace('!', '?');
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello World?

StringBuilder 개체를 문자열로 변환

StringBuilder 개체로 표현된 문자열을 String 매개 변수가 있는 메서드로 전달하거나 이를 사용자 인터페이스에 표시하려면 StringBuilder 개체를 String 개체로 변환해야 합니다. 이 변한 작업은 StringBuilder.ToString 메서드를 호출하여 수행합니다. 다음 예제에서는 여러 StringBuilder 메서드 호출한 다음 StringBuilder.ToString() 메서드를 호출하여 문자열을 표시합니다.

참고 항목

참조

System.Text.StringBuilder

개념

형식 서식 지정

기타 리소스

기본적인 문자열 작업

변경 기록

날짜

변경 내용

이유

StringBuilder-String 변환에 대한 정보가 추가되었습니다.

고객 의견