String 개체는 변경할 수 없습니다. 클래스의 메서드 중 하나를 사용할 때마다 메모리에 System.String 새 문자열 개체를 만들면 해당 새 개체에 대한 공간을 새로 할당해야 합니다. 문자열을 반복적으로 수정해야 하는 경우 새 String 개체를 만드는 것과 관련된 오버헤드는 비용이 많이 들 수 있습니다. System.Text.StringBuilder 새 개체를 만들지 않고 문자열을 수정하려는 경우 클래스를 사용할 수 있습니다. 예를 들어 루프에서 여러 문자열을 StringBuilder 함께 연결할 때 클래스를 사용하면 성능이 향상될 수 있습니다.
System.Text 네임스페이스 가져오기
클래스는 StringBuilder 네임스페이스에 System.Text 있습니다. 코드에서 정규화된 형식 이름을 제공할 필요가 없도록 네임스페이스를 System.Text 가져올 수 있습니다.
using System;
using System.Text;
Imports System.Text
StringBuilder 개체 인스턴스화
다음 예제와 같이 오버로드된 생성자 메서드 중 하나를 사용하여 변수를 초기화하여 클래스의 새 인스턴스 StringBuilder 를 만들 수 있습니다.
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
Dim myStringBuilder As New StringBuilder("Hello World!")
용량 및 길이 설정
StringBuilder 이 개체는 캡슐화된 문자열의 문자 수를 확장할 수 있는 동적 개체이지만 저장할 수 있는 최대 문자 수에 대한 값을 지정할 수 있습니다. 이 값을 개체의 용량이라고 하며 현재 StringBuilder 보유하는 문자열의 길이와 혼동해서는 안 됩니다. 예를 들어 길이가 5인 "Hello" 문자열을 사용하여 클래스의 StringBuilder 새 인스턴스를 만들고 개체의 최대 용량이 25임을 지정할 수 있습니다. 수정할 때 용량에 StringBuilder도달할 때까지 크기 자체를 다시 할당하지 않습니다. 이 경우 새 공간이 자동으로 할당되고 용량이 두 배가 됩니다. 오버로드된 생성자 중 하나를 사용하여 클래스의 StringBuilder 용량을 지정할 수 있습니다. 다음 예제에서는 개체를 myStringBuilder
최대 25개의 공백으로 확장할 수 있도록 지정합니다.
StringBuilder myStringBuilder = new StringBuilder("Hello World!", 25);
Dim myStringBuilder As New StringBuilder("Hello World!", 25)
또한 읽기/쓰기 Capacity 속성을 사용하여 개체의 최대 길이를 설정할 수 있습니다. 다음 예제에서는 Capacity 속성을 사용하여 최대 개체 길이를 정의합니다.
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 | 현재 StringBuilder 에서 지정된 문자 또는 문자열의 모든 항목을 다른 지정된 문자 또는 문자열로 바꿉니다. |
추가
Append 메서드를 사용하여 현재 StringBuilder가 나타내는 문자열 끝에 개체의 텍스트 또는 문자열 표현을 추가할 수 있습니다. 다음 예제에서는 StringBuilder 를 "Hello World"로 초기화한 다음 개체의 끝에 일부 텍스트를 추가합니다. 공간은 필요에 따라 자동으로 할당됩니다.
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.
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.
AppendFormat
메서드는 StringBuilder.AppendFormat 개체의 StringBuilder 끝에 텍스트를 추가합니다. 서식을 지정할 개체 또는 개체의 구현을 호출하여 IFormattable 지원합니다. 따라서 숫자, 날짜 및 시간 및 열거형 값에 대한 표준 서식 문자열, 숫자 및 날짜 및 시간 값에 대한 사용자 지정 서식 문자열 및 사용자 지정 형식에 대해 정의된 서식 문자열을 허용합니다. 서식 지정에 대한 자세한 내용은 형식 서식을 참조하세요. 이 메서드를 사용하여 변수 형식을 사용자 지정하고 해당 값을 StringBuilder에 추가할 수 있습니다. 다음 예제에서는 메서드를 AppendFormat 사용 하 여 개체의 끝에 통화 값으로 형식이 지정된 정수 값을 배치 합니다 StringBuilder .
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
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
삽입
메서드는 Insert 문자열 또는 개체를 현재 StringBuilder 개체의 지정된 위치에 추가합니다. 다음은 이 메서드를 사용하여 개체의 여섯 번째 위치에 단어를 삽입하는 예제입니다 StringBuilder .
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
myStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(myStringBuilder);
// The example displays the following output:
// Hello Beautiful World!
Dim myStringBuilder As New StringBuilder("Hello World!")
myStringBuilder.Insert(6, "Beautiful ")
Console.WriteLine(myStringBuilder)
' The example displays the following output:
' Hello Beautiful World!
제거하십시오
Remove 메서드를 사용하여 지정된 0부터 시작하는 인덱스에서 시작하여 현재 StringBuilder 개체에서 지정된 수의 문자를 제거할 수 있습니다. 다음 예제에서는 Remove 메서드를 사용하여 개체를 줄입니다 StringBuilder .
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
myStringBuilder.Remove(5,7);
Console.WriteLine(myStringBuilder);
// The example displays the following output:
// Hello
Dim myStringBuilder As New StringBuilder("Hello World!")
myStringBuilder.Remove(5, 7)
Console.WriteLine(myStringBuilder)
' The example displays the following output:
' Hello
교체합니다
Replace 메서드를 사용하여 개체 내의 StringBuilder 문자를 지정된 다른 문자로 바꿀 수 있습니다. 다음 예제에서는 Replace 메서드를 사용하여 느낌표 문자(!)의 모든 인스턴스에 대한 개체를 검색 StringBuilder 하고 물음표 문자(?)로 바꿉니다.
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
myStringBuilder.Replace('!', '?');
Console.WriteLine(myStringBuilder);
// The example displays the following output:
// Hello World?
Dim myStringBuilder As New StringBuilder("Hello World!")
myStringBuilder.Replace("!"c, "?"c)
Console.WriteLine(myStringBuilder)
' The example displays the following output:
' Hello World?
StringBuilder 개체를 문자열로 변환
개체가 나타내는 문자열을 StringBuilder 매개 변수가 있는 String 메서드 StringBuilder 에 String 전달하거나 사용자 인터페이스에 표시하려면 먼저 개체를 개체로 변환해야 합니다. 메서드를 호출하여 이 변환을 수행합니다 StringBuilder.ToString . 다음 예제에서는 여러 StringBuilder 메서드를 호출한 다음 메서드를 StringBuilder.ToString() 호출하여 문자열을 표시합니다.
using System;
using System.Text;
public class Example
{
public static void Main()
{
StringBuilder sb = new StringBuilder();
bool flag = true;
string[] spellings = { "recieve", "receeve", "receive" };
sb.AppendFormat("Which of the following spellings is {0}:", flag);
sb.AppendLine();
for (int ctr = 0; ctr <= spellings.GetUpperBound(0); ctr++) {
sb.AppendFormat(" {0}. {1}", ctr, spellings[ctr]);
sb.AppendLine();
}
sb.AppendLine();
Console.WriteLine(sb.ToString());
}
}
// The example displays the following output:
// Which of the following spellings is True:
// 0. recieve
// 1. receeve
// 2. receive
Imports System.Text
Module Example
Public Sub Main()
Dim sb As New StringBuilder()
Dim flag As Boolean = True
Dim spellings() As String = {"recieve", "receeve", "receive"}
sb.AppendFormat("Which of the following spellings is {0}:", flag)
sb.AppendLine()
For ctr As Integer = 0 To spellings.GetUpperBound(0)
sb.AppendFormat(" {0}. {1}", ctr, spellings(ctr))
sb.AppendLine()
Next
sb.AppendLine()
Console.WriteLine(sb.ToString())
End Sub
End Module
' The example displays the following output:
' Which of the following spellings is True:
' 0. recieve
' 1. receeve
' 2. receive
참고하십시오
.NET