이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

StringBuilder 클래스

 

게시 날짜: 2016년 11월

변경할 수 있는 문자열을 나타냅니다. 이 클래스는 상속될 수 없습니다.

이 유형에 대 한.NET Framework 소스 코드를 찾아보려면 참조는 Reference Source합니다.

네임스페이스:   System.Text
어셈블리:  mscorlib(mscorlib.dll에 있음)

System.Object
  System.Text.StringBuilder

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class StringBuilder : ISerializable

이름설명
System_CAPS_pubmethodStringBuilder()

StringBuilder 클래스의 새 인스턴스를 초기화합니다.

System_CAPS_pubmethodStringBuilder(Int32)

지정된 용량을 사용하여 StringBuilder 클래스의 새 인스턴스를 초기화합니다.

System_CAPS_pubmethodStringBuilder(Int32, Int32)

지정된 용량으로 시작되어 지정된 최대 용량까지 커질 수 있는 StringBuilder 클래스의 새 인스턴스를 초기화합니다.

System_CAPS_pubmethodStringBuilder(String)

지정된 문자열을 사용하여 StringBuilder 클래스의 새 인스턴스를 초기화합니다.

System_CAPS_pubmethodStringBuilder(String, Int32)

지정된 문자열과 용량을 사용하여 StringBuilder 클래스의 새 인스턴스를 초기화합니다.

System_CAPS_pubmethodStringBuilder(String, Int32, Int32, Int32)

지정된 부분 문자열과 용량을 사용하여 StringBuilder 클래스의 새 인스턴스를 초기화합니다.

이름설명
System_CAPS_pubpropertyCapacity

현재 인스턴스에 의해 할당된 메모리에 포함할 수 있는 최대 문자 수를 가져오거나 설정합니다.

System_CAPS_pubpropertyChars[Int32]

이 인스턴트에서 특정 위치에 있는 문자를 가져오거나 설정합니다.

System_CAPS_pubpropertyLength

현재 StringBuilder 개체의 길이를 가져오거나 설정합니다.

System_CAPS_pubpropertyMaxCapacity

이 인스턴스의 최대 용량을 가져옵니다.

이름설명
System_CAPS_pubmethodAppend(Boolean)

지정된 부울 값의 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(Byte)

지정된 8비트 부호 없는 정수의 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(Char)

지정된 Char 개체의 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(Char*, Int32)

지정된 주소에서 시작하는 유니코드 문자의 배열을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(Char, Int32)

유니코드 문자에 대한 문자열 표현의 지정된 복사본 수를 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(Char[])

지정된 배열의 유니코드 문자에 대한 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(Char[], Int32, Int32)

유니코드 문자의 지정된 하위 배열에 대한 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(Decimal)

지정된 10진수의 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(Double)

지정된 배정밀도 부동 소수점 숫자의 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(Int16)

지정된 16비트 부호 있는 정수의 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(Int32)

지정된 32비트 부호 있는 정수의 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(Int64)

지정된 64비트 부호 있는 정수의 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(Object)

지정된 개체의 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(SByte)

지정된 8비트 부호 있는 정수의 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(Single)

지정된 단정밀도 부동 소수점 숫자의 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(String)

지정된 문자열의 복사본을 이 인스턴스의 끝에 추가합니다.

System_CAPS_pubmethodAppend(String, Int32, Int32)

지정된 부분 문자열의 복사본을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(UInt16)

지정된 16비트 부호 없는 정수의 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(UInt32)

지정된 32비트 부호 없는 정수의 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppend(UInt64)

지정된 64비트 부호 없는 정수의 문자열 표현을 이 인스턴스에 추가합니다.

System_CAPS_pubmethodAppendFormat(IFormatProvider, String, Object)

서식 항목이 0개 이상 포함된 복합 서식 문자열을 처리하여 반환된 문자열을 이 인스턴스에 추가합니다. 지정된 형식 공급자를 사용하여 각 서식 항목이 단일 인수의 문자열 표현으로 바뀝니다.

System_CAPS_pubmethodAppendFormat(IFormatProvider, String, Object, Object)

서식 항목이 0개 이상 포함된 복합 서식 문자열을 처리하여 반환된 문자열을 이 인스턴스에 추가합니다. 지정된 형식 공급자를 사용하여 각 형식 항목이 두 인수 중 하나의 문자열 표현으로 바뀝니다.

System_CAPS_pubmethodAppendFormat(IFormatProvider, String, Object, Object, Object)

서식 항목이 0개 이상 포함된 복합 서식 문자열을 처리하여 반환된 문자열을 이 인스턴스에 추가합니다. 지정된 형식 공급자를 사용하여 각 형식 항목이 세 인수 중 하나의 문자열 표현으로 바뀝니다.

System_CAPS_pubmethodAppendFormat(IFormatProvider, String, Object[])

서식 항목이 0개 이상 포함된 복합 서식 문자열을 처리하여 반환된 문자열을 이 인스턴스에 추가합니다. 각 서식 항목은 지정된 서식 공급자를 사용하여 매개 변수 배열에 있는 해당 인수의 문자열 표현으로 바뀝니다.

System_CAPS_pubmethodAppendFormat(String, Object)

서식 항목이 0개 이상 포함된 복합 서식 문자열을 처리하여 반환된 문자열을 이 인스턴스에 추가합니다. 각 서식 항목이 단일 인수의 문자열 표현으로 바뀝니다.

System_CAPS_pubmethodAppendFormat(String, Object, Object)

서식 항목이 0개 이상 포함된 복합 서식 문자열을 처리하여 반환된 문자열을 이 인스턴스에 추가합니다. 각 서식 항목이 두 인수 중 하나의 문자열 표현으로 바뀝니다.

System_CAPS_pubmethodAppendFormat(String, Object, Object, Object)

서식 항목이 0개 이상 포함된 복합 서식 문자열을 처리하여 반환된 문자열을 이 인스턴스에 추가합니다. 각 서식 항목이 세 인수 중 하나의 문자열 표현으로 바뀝니다.

System_CAPS_pubmethodAppendFormat(String, Object[])

서식 항목이 0개 이상 포함된 복합 서식 문자열을 처리하여 반환된 문자열을 이 인스턴스에 추가합니다. 각 형식 항목은 매개 변수 배열에 있는 해당 인수의 문자열 표현으로 바뀝니다.

System_CAPS_pubmethodAppendLine()

현재 StringBuilder 개체의 끝에 기본 줄 종결자를 추가합니다.

System_CAPS_pubmethodAppendLine(String)

현재 StringBuilder 개체의 끝에 지정한 문자열의 복사본과 기본 줄 종결자를 차례로 추가합니다.

System_CAPS_pubmethodClear()

현재 StringBuilder 인스턴스에서 모든 문자를 제거합니다.

System_CAPS_pubmethodCopyTo(Int32, Char[], Int32, Int32)

이 인스턴스에서 지정한 세그먼트의 문자를 대상 Char 배열에서 지정한 세그먼트에 복사합니다.

System_CAPS_pubmethodEnsureCapacity(Int32)

StringBuilder 인스턴스의 용량이 최소한 지정된 값이 되도록 합니다.

System_CAPS_pubmethodEquals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.(Object에서 상속됨)

System_CAPS_pubmethodEquals(StringBuilder)

이 인스턴스가 지정된 개체와 같은지를 나타내는 값을 반환합니다.

System_CAPS_pubmethodGetHashCode()

기본 해시 함수로 작동합니다.(Object에서 상속됨)

System_CAPS_pubmethodGetType()

현재 인스턴스의 Type을 가져옵니다.(Object에서 상속됨)

System_CAPS_pubmethodInsert(Int32, Boolean)

지정된 문자 위치에 있는 이 인스턴스에 부울 값의 문자열 표현을 삽입합니다.

System_CAPS_pubmethodInsert(Int32, Byte)

지정된 8비트 부호 없는 정수의 문자열 표현을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, Char)

지정된 유니코드 문자의 문자열 표현을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, Char[])

지정된 유니코드 문자 배열의 문자열 표현을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, Char[], Int32, Int32)

유니코드 문자의 지정된 하위 배열에 대한 문자열 표현을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, Decimal)

10진수의 문자열 표현을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, Double)

배정밀도 부동 소수점 숫자의 문자열 표현을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, Int16)

지정된 16비트 부호 있는 정수의 문자열 표현을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, Int32)

지정된 32비트 부호 있는 정수의 문자열 표현을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, Int64)

부호 있는 64비트 정수의 문자열 표현을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, Object)

개체의 문자열 표현을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, SByte)

지정된 8비트 부호 있는 정수의 문자열 표현을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, Single)

단정밀도 부동 소수점 숫자의 문자열 표현을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, String)

문자열을 지정한 인덱스에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, String, Int32)

지정된 하나 이상의 문자열의 복사본을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, UInt16)

부호 없는 16비트 정수의 문자열 표현을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, UInt32)

부호 없는 32비트 정수의 문자열 표현을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodInsert(Int32, UInt64)

부호 없는 64비트 정수의 문자열 표현을 지정된 문자 위치에 있는 이 인스턴스에 삽입합니다.

System_CAPS_pubmethodRemove(Int32, Int32)

이 인스턴스에서 지정된 문자 범위를 제거합니다.

System_CAPS_pubmethodReplace(Char, Char)

이 인스턴스에서 발견되는 지정된 문자를 지정된 다른 문자로 모두 바꿉니다.

System_CAPS_pubmethodReplace(Char, Char, Int32, Int32)

이 인스턴스의 부분 문자열에서 발견되는 지정된 문자를 지정된 다른 문자로 모두 바꿉니다.

System_CAPS_pubmethodReplace(String, String)

이 인스턴스에서 발견되는 지정된 문자열을 지정된 다른 문자열로 모두 바꿉니다.

System_CAPS_pubmethodReplace(String, String, Int32, Int32)

이 인스턴스의 부분 문자열에서 발견되는 지정된 문자열을 지정된 다른 문자열로 모두 바꿉니다.

System_CAPS_pubmethodToString()

이 인스턴스의 값을 String으로 변환합니다.(Object.ToString()을(를) 재정의함)

System_CAPS_pubmethodToString(Int32, Int32)

이 인스턴스의 부분 문자열 값을 String으로 변환합니다.

이름설명
System_CAPS_pubinterfaceSystem_CAPS_privmethodISerializable.GetObjectData(SerializationInfo, StreamingContext)

이 API는 제품 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. 현재 System.Runtime.Serialization.SerializationInfo 개체를 deserialize하는 데 필요한 데이터로 StringBuilder 개체를 채웁니다.

System_CAPS_note참고

이 유형에 대 한.NET Framework 소스 코드를 보려면 참조는 Reference Source합니다. 온라인 소스 코드, 오프 라인으로 보기에 대 한 참조를 다운로드 및 디버깅 하는 동안 소스 (패치 및 업데이트 포함)를 단계별로 실행 합니다. see instructions.

이 클래스는 값은 변경할 수 있는 문자 시퀀스를 문자열 형식 개체를 나타냅니다.

섹션 내용

하지만 StringBuilderString 둘은 시퀀스 나타냅니다의 문자를 다르게 구현 되는 합니다. String 변경할 수 없는 형식이입니다. 수정 하려면 표시 된 각 작업 즉, 한 String 개체는 실제로 새 문자열을 만듭니다.

예를 들어,에 대 한 호출에서 String.Concat 라는 문자열 변수 값을 변경 하려면 다음 C# 예제에서는 메서드가 표시 value합니다. 실제로 Concat 메서드가 반환 되는 value 에서 주소 및 다른 값을 가진 개체를는 value 메서드에 전달 된 개체입니다. 참고 사용 하 여 예제를 컴파일해야 하는 /unsafe 컴파일러 옵션입니다.

using System;

public class Example
{
   public unsafe static void Main()
   {
      string value = "This is the first sentence" + ".";
      fixed (char* start = value)
      {
         value = String.Concat(value, "This is the second sentence. ");
         fixed (char* current = value)
         {
            Console.WriteLine(start == current);
         }
      }   
   }
}
// The example displays the following output:
//      False

광범위 한 문자열 조작 (예: 작업을 여러 번 루프에서에서 문자열을 수정 하는 앱)를 수행 하는 루틴의 경우 문자열을 반복 해 서 수정 성능이 크게 저하를 정확한 수 있습니다. 사용 하 여 다른 방법은 StringBuilder, 변경할 수 있는 문자열 클래스입니다. 가변성을 클래스의 인스턴스를 만든 후 수정할 수 있습니다 추가, 제거, 교체 또는 문자를 삽입 하 여 의미 합니다. A StringBuilder 개체는 문자열에 대 한 확장을 수용 하기 위해 버퍼를 유지 합니다. 공간이; 하는 경우 새 데이터 버퍼에 추가 됩니다. 그렇지 않으면 새로운, 더 큰 버퍼 할당 하 고 원래 버퍼의 데이터 새 버퍼에 복사 되 고 새 데이터는 그런 다음 새 버퍼에 추가 됩니다.

System_CAPS_important중요

하지만 StringBuilder 클래스에는 일반적으로 보다 나은 성능을 제공는 String 클래스 하지 자동으로 대체 해야 StringStringBuilder 문자열을 조작 하 고 싶을 때마다 합니다. 성능에 대해 새 문자열, 응용 프로그램을 실행 하는 시스템 및 작업의 유형을 할당할 메모리의 양 문자열의 크기에 따라 달라 집니다. 확인 하려면 앱을 테스트할 수 있도록 준비 해야 하는지 여부를 StringBuilder 실제로 성능이 크게 향상을 제공 합니다.

사용 하는 것이 좋습니다는 String 이러한 조건에서 클래스:

  • 때 응용 프로그램을 문자열로 있도록 변경 작업의 수는 적습니다. 이러한 경우 StringBuilder 수 제안을 무시할 수 또는 성능 향상을 통해 String합니다.

  • 때 고정된 된 수의 문자열 리터럴와 특히 연결 작업을 수행 하려고 합니다. 이 경우 컴파일러는 연결 작업을 하나의 작업으로 결합할 수 있습니다.

  • 문자열을 빌드하는 동안 광범위 한 검색 작업을 수행 해야 하는 경우. StringBuilder 와 같은 클래스 없는 검색 방법 IndexOf 또는 StartsWith합니다. 으로 변환 해야는 StringBuilder 개체는 String 이러한 작업을 하 고이 사용 하 여 성능을 활용할 부정할 수에 대 한 StringBuilder합니다. 자세한 내용은 참조는 StringBuilder 개체에서 텍스트 검색 섹션입니다.

사용 하는 것이 좋습니다는 StringBuilder 이러한 조건에서 클래스:

  • 예상 하는 응용 프로그램 (예: 사용자 입력을 포함 하는 문자열의 임의의 숫자를 연결 하는 루프를 사용 하는 경우) 디자인 타임에 문자열로 변경의 수 알된 수 있도록 합니다.

  • 예상 하는 응용 프로그램을 상당히 많이 변경 하는 문자열을 확인 합니다.

StringBuilder.Length 속성의 문자 수를 나타냅니다는 StringBuilder 현재 개체를 포함 합니다. 문자를 추가 하는 경우는 StringBuilder 개체의 크기를 같아질 때까지 해당 길이 증가 StringBuilder.Capacity 개체를 포함할 수 있는 문자 수를 정의 하는 속성입니다. 추가 된 문자 수의 길이 이면는 StringBuilder 의 값은 현재 용량, 새 메모리를 초과 하는 개체 할당는 Capacity 속성 두 배로 증가, 새 문자가 추가 되어는 StringBuilder 개체 및 해당 Length 속성 조정 됩니다. 에 대 한 추가 메모리는 StringBuilder 개체에 정의 된 값에 도달할 때까지 동적으로 할당 되는 StringBuilder.MaxCapacity 속성입니다. 최대 용량에 도달 하는 추가 메모리에 할당 될 수는 StringBuilder 개체 문자를 추가 하거나 확장 하 고 해당 최대 용량을 초과 하는 동안 throw 하는 중 하나는 ArgumentOutOfRangeException 또는 OutOfMemoryException 예외입니다.

다음 예제에서는 어떻게는 StringBuilder 개체는 새 메모리를 할당 하 고 개체에 할당 된 문자열에서 확장으로 해당 용량을 동적으로 증가 합니다. 코드는 StringBuilder 기본 (매개 변수가 없는) 생성자를 호출 하 여 개체입니다. 이 개체의 기본 용량 16 자 이며 최대 용량 20 억 개 이상의 문자입니다. "문장입니다." 문자열을 추가 문자열 길이 (19 자)의 기본 용량을 초과 하기 때문에 새 메모리 할당 발생는 StringBuilder 개체입니다. 32 자로 개체의 용량이 2 배로 증가 하 고 새 문자열 추가 되 고 개체의 길이 19 자과 같습니다. 코드는 다음 문자열을 추가 "이는 추가 문장입니다." 값에는 StringBuilder 11 번 개체입니다. 때마다 추가 작업 하면의 길이 StringBuilder 용량, 기존 용량을 초과 하는 개체를 두 배로 늘릴 및 Append 작업이 성공 합니다.

using System;
using System.Reflection;
using System.Text;

public class Example
{
   public static void Main()
   {
      StringBuilder sb = new StringBuilder();
      ShowSBInfo(sb);
      sb.Append("This is a sentence.");
      ShowSBInfo(sb);
      for (int ctr = 0; ctr <= 10; ctr++) {
         sb.Append("This is an additional sentence.");
         ShowSBInfo(sb);
      }   
   }

   private static void ShowSBInfo(StringBuilder sb)
   {
      foreach (var prop in sb.GetType().GetProperties()) {
         if (prop.GetIndexParameters().Length == 0)
            Console.Write("{0}: {1:N0}    ", prop.Name, prop.GetValue(sb));
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//    Capacity: 16    MaxCapacity: 2,147,483,647    Length: 0
//    Capacity: 32    MaxCapacity: 2,147,483,647    Length: 19
//    Capacity: 64    MaxCapacity: 2,147,483,647    Length: 50
//    Capacity: 128    MaxCapacity: 2,147,483,647    Length: 81
//    Capacity: 128    MaxCapacity: 2,147,483,647    Length: 112
//    Capacity: 256    MaxCapacity: 2,147,483,647    Length: 143
//    Capacity: 256    MaxCapacity: 2,147,483,647    Length: 174
//    Capacity: 256    MaxCapacity: 2,147,483,647    Length: 205
//    Capacity: 256    MaxCapacity: 2,147,483,647    Length: 236
//    Capacity: 512    MaxCapacity: 2,147,483,647    Length: 267
//    Capacity: 512    MaxCapacity: 2,147,483,647    Length: 298
//    Capacity: 512    MaxCapacity: 2,147,483,647    Length: 329
//    Capacity: 512    MaxCapacity: 2,147,483,647    Length: 360

기본 용량을 StringBuilder 개체가 16 자가 고 기본 최대 용량 Int32.MaxValue합니다. 이러한 기본 값이 호출 하는 경우 사용 되는 StringBuilder()StringBuilder(String) 생성자입니다.

초기 용량을 명시적으로 정의할 수는 StringBuilder 다음과 같은 방법으로 개체:

  • 중 하나를 호출 하 여는 StringBuilder 생성자를 포함 하는 capacity 개체를 만들 때 매개 변수입니다.

  • 새 값을 명시적으로 할당 하 여는 StringBuilder.Capacity 속성을 기존 확장 StringBuilder 개체입니다. 새 용량을 사용 하면 기존 보다 크거나 용량 보다 작으면 속성 예외는 throw 된 StringBuilder 개체의 최대 용량입니다.

  • 호출 하 여는 StringBuilder.EnsureCapacity 메서드 새 용량을 사용 합니다. 새 용량을 보다 크지 않아야 합니다.는 StringBuilder 개체의 최대 용량입니다. 그러나에 할당 하는 달리는 Capacity 속성을 EnsureCapacity 경우 예외를 throw 하지 않습니다 원하는 새 용량을 사용 하면 기존 용량 보다 작습니다;이 경우에이 메서드는 효과가 없습니다.

문자열의 길이에 할당 하는 경우는 StringBuilder 기본 용량 또는 지정된 된 용량을 초과 하는 생성자 호출의 개체는 Capacity 지정 된 문자열의 길이 속성은 value 매개 변수입니다.

최대 용량을 명시적으로 정의할 수는 StringBuilder 를 호출 하 여 개체의 StringBuilder(Int32, Int32) 생성자입니다. 최대 용량에 새 값을 할당 하 여 변경할 수 없습니다는 MaxCapacity 속성을 읽기 전용 이기 때문에 있습니다.

이전 섹션으로 표시 된 기존 용량 추가 메모리가 부족 한 경우 할당 된의 용량을 StringBuilder double 값으로 정의 된 값까지 개체는 MaxCapacity 속성입니다.

일반적으로 기본 용량 및 최대 용량을 대부분의 응용 프로그램에 적합 합니다. 다음과 같은 경우에 이러한 값을 설정 하는 것이 좋습니다.

  • 하는 경우의 최종 크기는 StringBuilder 개체는 일반적으로 몇 메가바이트 초과 매우 큰 증가할 수 있습니다. 이 경우에 있을 수 있습니다 초기 설정에서 몇 가지 성능상의 이점을 Capacity 속성을 너무 많은 메모리 재할당에 대 한 필요성을 제거 하려면 훨씬 높은 값입니다.

  • 경우 앱은 제한 된 메모리를 갖춘 시스템에서 실행 중입니다. 설정 하려는 경우에 MaxCapacity 속성을 보다 작은 Int32.MaxValue 앱 메모리 사용이 제한 된 환경에서 실행 되 게를 일으킬 수 있는 큰 문자열을 처리 하는 경우.

인스턴스화하는 StringBuilder 하나는 다음 표에 나열 된 6 개 오버 로드 된 클래스 생성자를 호출 하 여 개체입니다. 인스턴스화하는 생성자의 세 가지는 StringBuilder 설정 하지만 해당 값은 빈 문자열을 하는 개체의 CapacityMaxCapacity 다르게 값입니다. 나머지 세 명의 생성자 정의 StringBuilder 특정 문자열 값 및 용량을 가진 개체입니다. 기본 최대 용량을 사용 하 여 세 가지 생성자 중 두 가지 Int32.MaxValue, 반면 세 번째 작업을 사용 하면 최대 용량을 설정할 수 있습니다.

생성자

문자열 값

최대 용량

StringBuilder()

String.Empty

16

Int32.MaxValue

StringBuilder(Int32)

String.Empty

으로 정의 되는 capacity 매개 변수

Int32.MaxValue

StringBuilder(Int32, Int32)

String.Empty

으로 정의 되는 capacity 매개 변수

으로 정의 되는 maxCapacity 매개 변수

StringBuilder(String)

으로 정의 되는 value 매개 변수

16 또는 value합니다. Length, 이상인

Int32.MaxValue

StringBuilder(String, Int32)

으로 정의 되는 value 매개 변수

으로 정의 되는 capacity 매개 변수 또는 value합니다. Length, 이상인 합니다.

Int32.MaxValue

StringBuilder(String, Int32, Int32, Int32)

에 정의 된 value합니다. Substring(startIndex, length)

으로 정의 되는 capacity 매개 변수 또는 value합니다. Length, 이상인 합니다.

으로 정의 되는 maxCapacity 매개 변수

다음 예제를 사용 하 여 이러한 생성자 오버 로드 중 세 가지 StringBuilder 개체입니다.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      string value = "An ordinary string";
      int index = value.IndexOf("An ") + 3;
      int capacity = 0xFFFF;

      // Instantiate a StringBuilder from a string.
      StringBuilder sb1 = new StringBuilder(value);
      ShowSBInfo(sb1); 

      // Instantiate a StringBuilder from string and define a capacity.  
      StringBuilder sb2 = new StringBuilder(value, capacity);   
      ShowSBInfo(sb2); 

      // Instantiate a StringBuilder from substring and define a capacity.  
      StringBuilder sb3 = new StringBuilder(value, index, 
                                            value.Length - index, 
                                            capacity );
      ShowSBInfo(sb3); 
   }

   public static void ShowSBInfo(StringBuilder sb)
   {
      Console.WriteLine("\nValue: {0}", sb.ToString());
      foreach (var prop in sb.GetType().GetProperties()) {
         if (prop.GetIndexParameters().Length == 0)
            Console.Write("{0}: {1:N0}    ", prop.Name, prop.GetValue(sb));
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//    Value: An ordinary string
//    Capacity: 18    MaxCapacity: 2,147,483,647    Length: 18
//    
//    Value: An ordinary string
//    Capacity: 65,535    MaxCapacity: 2,147,483,647    Length: 18
//    
//    Value: ordinary string
//    Capacity: 65,535    MaxCapacity: 2,147,483,647    Length: 15

대부분의 문자열을 수정 하는 메서드는 StringBuilder 인스턴스는 동일한 인스턴스에 대 한 참조를 반환 합니다. 호출할 수 있도록 StringBuilder 두 가지 방법으로 메서드:

  • 개별 메서드를 호출할 수 있으며, 다음 예제와 마찬가지로 반환 값을 무시할 수 있습니다.

    using System;
    using System.Text;
    
    public class Example
    {
       public static void Main()
       {
          StringBuilder sb = new StringBuilder();
          sb.Append("This is the beginning of a sentence, ");
          sb.Replace("the beginning of ", "");
          sb.Insert(sb.ToString().IndexOf("a ") + 2, "complete ");
          sb.Replace(",", ".");
          Console.WriteLine(sb.ToString());
       }
    }
    // The example displays the following output:
    //        This is a complete sentence.
    
  • 단일 문에서 일련의 메서드 호출을 만들 수 있습니다. 연속 작업을 연결 하는 하나의 명령문을 작성 하려는 경우 편리할 수 있습니다. 다음 예제에서는 코드 한 줄에는 이전 예제에서 세 개의 메서드 호출을 통합합니다.

    using System;
    using System.Text;
    
    public class Example
    {
       public static void Main()
       {
          StringBuilder sb = new StringBuilder("This is the beginning of a sentence, ");
          sb.Replace("the beginning of ", "").Insert(sb.ToString().IndexOf("a ") + 2, 
                                                     "complete ").Replace(",", ".");
          Console.WriteLine(sb.ToString());
       }
    }
    // The example displays the following output:
    //        This is a complete sentence.
    

메서드를 사용할 수는 StringBuilder 반복, 추가, 삭제 또는 수정에 문자 클래스는 StringBuilder 개체입니다.

문자를 액세스할 수는 StringBuilder 사용 하 여 개체는 StringBuilder.Chars 속성입니다. C#에서 Chars 인덱서입니다; Visual basic에서은의 기본 속성은 StringBuilder 클래스입니다. 이렇게 하면 설정 하거나 명시적으로 참조 하지 않고만 인덱스를 사용 하 여 개별 문자를 검색 하는 Chars 속성입니다. 문자는 StringBuilder 개체의 인덱스 0 (영)부터 시작 하 고 인덱스를 계속 Length -1입니다.

다음 예제는 Chars 속성입니다. 에 임의의 숫자를 10 개를 추가 하기는 StringBuilder 개체를 한 다음 각 문자를 반복 합니다. 문자의 유니코드 범주 있으면 UnicodeCategory.DecimalDigitNumber, 수 1 씩 감소 (또는 해당 값이 0 이면 숫자 9로 변경). 내용을 표시 하는 예제는 StringBuilder 전과 후의 개별 문자 값이 변경 되었는지 모두 개체입니다.

using System;
using System.Globalization;
using System.Text;

public class Example
{
   public static void Main()
   {
      Random rnd = new Random();
      StringBuilder sb = new StringBuilder();

      // Generate 10 random numbers and store them in a StringBuilder.
      for (int ctr = 0; ctr <= 9; ctr++)
         sb.Append(rnd.Next().ToString("N5"));    

      Console.WriteLine("The original string:");
      Console.WriteLine(sb.ToString());

      // Decrease each number by one.
      for (int ctr = 0; ctr < sb.Length; ctr++) {
         if (Char.GetUnicodeCategory(sb[ctr]) == UnicodeCategory.DecimalDigitNumber) {
            int number = (int) Char.GetNumericValue(sb[ctr]);
            number--;
            if (number < 0) number = 9;

            sb[ctr] = number.ToString()[0];
         }
      }
      Console.WriteLine("\nThe new string:");
      Console.WriteLine(sb.ToString());
   }
}
// The example displays the following output:
//    The original string:
//    1,457,531,530.00000940,522,609.000001,668,113,564.000001,998,992,883.000001,792,660,834.00
//    000101,203,251.000002,051,183,075.000002,066,000,067.000001,643,701,043.000001,702,382,508
//    .00000
//    
//    The new string:
//    0,346,420,429.99999839,411,598.999990,557,002,453.999990,887,881,772.999990,681,559,723.99
//    999090,192,140.999991,940,072,964.999991,955,999,956.999990,532,690,932.999990,691,271,497
//    .99999

StringBuilder 의 내용을 확장을 위한 다음 메서드를 포함 하는 클래스는 StringBuilder 개체:

  • Append 메서드를 추가 하는 문자열, 부분 문자열, 문자 배열, 일부 문자 배열에 단일 문자를 여러 번 반복 하거나 기본 데이터의 문자열 표현에 입력 한 StringBuilder 개체입니다.

  • AppendLine 메서드를 추가 하는 줄 종결자와 함께 문자열 또는 줄 종결자를 StringBuilder 개체입니다.

  • AppendFormat 메서드를 추가 하는 StringBuilder 개체입니다. 결과 문자열에 포함 된 개체의 문자열 표현에는 현재 시스템 문화권 또는 지정된 된 문화권의 서식 지정 규칙 반영할 수 있습니다.

  • Insert 메서드를 삽입 하는 문자열, 부분 문자열, 여러 개의 반복 문자열의 문자 배열, 문자 배열의 일부 또는 기본 데이터의 문자열 표현을 지정 된 위치에 형식을 StringBuilder 개체입니다. 위치는 인덱스 0부터 시작 하 여 정의 됩니다.

다음 예제에서는 Append, AppendLine, AppendFormat, 및 Insert 의 텍스트를 확장 하는 메서드는 StringBuilder 개체입니다.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      // Create a StringBuilder object with no text.
      StringBuilder sb = new StringBuilder();
      // Append some text.
      sb.Append('*', 10).Append(" Adding Text to a StringBuilder Object ").Append('*', 10);
      sb.AppendLine("\n");
      sb.AppendLine("Some code points and their corresponding characters:");
      // Append some formatted text.
      for (int ctr = 50; ctr <= 60; ctr++) {
         sb.AppendFormat("{0,12:X4} {1,12}", ctr, Convert.ToChar(ctr));
         sb.AppendLine();
      }
      // Find the end of the introduction to the column.
      int pos = sb.ToString().IndexOf("characters:") + 11 + 
                Environment.NewLine.Length;
      // Insert a column header.
      sb.Insert(pos, String.Format("{2}{0,12:X4} {1,12}{2}", "Code Unit", 
                                   "Character", "\n"));      

      // Convert the StringBuilder to a string and display it.      
      Console.WriteLine(sb.ToString());      
   }
}
// The example displays the following output:
//    ********** Adding Text to a StringBuilder Object **********
//    
//    Some code points and their corresponding characters:
//    
//       Code Unit    Character
//            0032            2
//            0033            3
//            0034            4
//            0035            5
//            0036            6
//            0037            7
//            0038            8
//            0039            9
//            003A            :
//            003B            ;
//            003C            <

StringBuilder 클래스의 현재 크기를 줄일 수 있는 메서드가 포함 됩니다 StringBuilder 인스턴스. Clear 메서드는 모든 문자를 제거 하 고 설정의 Length 속성을 0으로 합니다. Remove 메서드는 지정된 된 수의 특정 인덱스 위치부터 시작 하는 문자를 삭제 합니다. 끝에서 문자를 제거할 수는 또한는 StringBuilder 개체를 설정 하 여 해당 Length 속성을 현재 인스턴스의 길이 보다 작은 값입니다.

다음 예제에서 텍스트의 일부를 제거는 StringBuilder 개체를 결과 용량, 최대 용량 및 길이 속성 값을 표시 한 다음 호출의 Clear 에서 모든 문자를 제거 하는 메서드는 StringBuilder 개체입니다.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      StringBuilder sb = new StringBuilder("A StringBuilder object");
      ShowSBInfo(sb);
      // Remove "object" from the text.
      string textToRemove = "object";
      int pos = sb.ToString().IndexOf(textToRemove);
      if (pos >= 0) {
         sb.Remove(pos, textToRemove.Length);
         ShowSBInfo(sb);
      }
      // Clear the StringBuilder contents.
      sb.Clear();
      ShowSBInfo(sb);   
   }

   public static void ShowSBInfo(StringBuilder sb)
   {
      Console.WriteLine("\nValue: {0}", sb.ToString());
      foreach (var prop in sb.GetType().GetProperties()) {
         if (prop.GetIndexParameters().Length == 0)
            Console.Write("{0}: {1:N0}    ", prop.Name, prop.GetValue(sb));
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//    Value: A StringBuilder object
//    Capacity: 22    MaxCapacity: 2,147,483,647    Length: 22
//    
//    Value: A StringBuilder
//    Capacity: 22    MaxCapacity: 2,147,483,647    Length: 16
//    
//    Value:
//    Capacity: 22    MaxCapacity: 2,147,483,647    Length: 0

StringBuilder.Replace 메서드는 문자 또는 전체 문자열의 모든 항목을 바꿉니다 StringBuilder 개체 또는 특정 문자 범위입니다. 다음 예제에서는 Replace 에 물음표 (?)와 모든 느낌표 (!)를 대체 하는 메서드는 StringBuilder 개체입니다.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
      MyStringBuilder.Replace('!', '?');
      Console.WriteLine(MyStringBuilder);
   }
}
// The example displays the following output:
//       Hello World?

StringBuilder 클래스는 비슷한 메서드를 포함 하지는 String.Contains, String.IndexOf, 및 String.StartsWith 에서 제공 하는 메서드는 String 클래스를 특정 문자 또는 부분 문자열에 대 한 개체를 검색할 수 있습니다. 존재 여부를 확인 하거나 부분 문자열의 문자 위치를 시작 하는 요구를 검색 하는 한 String 문자열 검색 방법 또는 정규식 메서드 중 하나를 사용 하 여 값입니다. 다음 표에서 같이 이러한 검색을 구현 하는 방법은 네 가지입니다.

기술

전문가

단점

에 추가 하기 전에 문자열 값을 검색 된 StringBuilder 개체입니다.

부분 문자열의 존재 여부를 결정 하는 데 유용 합니다.

부분 문자열의 인덱스 위치는 중요 한 경우에 사용할 수 없습니다.

호출 ToString 반환 된 검색 및 String 개체입니다.

사용 하기 쉬운 텍스트를 할당 하는 경우는 StringBuilder 개체를 수정 하기 시작 합니다.

반복 해 서 호출 번거로운 ToString 모든 텍스트에 추가 되기 전에 수정 작업을 확인 해야 하는 경우는 StringBuilder 개체입니다.

끝에서 작동 해야 합니다.는 StringBuilder 변경 하는 경우 개체의 텍스트입니다.

사용 하는 Chars 순차적으로 문자 범위를 검색할 속성입니다.

개별 문자 또는 작은 부분 문자열 관련 경우 유용 합니다.

검색할 문자 수가 큰 경우 또는 검색 논리는 복잡 한 경우 복잡 합니다.

변환는 StringBuilder 개체는 String 개체를에서 수정 작업을 수행할는 String 개체입니다.

수정 횟수 작을 경우에 유용 합니다.

성능상의 장점을 부정는 StringBuilder 클래스는 수정 횟수가 큽니다.

이러한 기술을 더 자세히 살펴보겠습니다.

  • 검색의 목표에 저장 하기 전에 문자열을 검색할 수는 특정 부분 문자열 (즉, 필요가 없는 경우에 부분 문자열의 위치)이 있는지 확인 하는 경우는 StringBuilder 개체입니다. 다음 예제에서는 한 가지 구현을 제공 합니다. 정의 StringBuilderFinder 클래스의 생성자에 대 한 참조를 전달 되는 StringBuilder 개체와 문자열에서 찾을 수 있는 부분 문자열입니다. 이 예제를 기록 된 온도 화씨 또는 섭씨로 적절 한 소개 텍스트의 시작 부분에 추가 되는지 여부를 확인 하려고 하는 경우에 StringBuilder 개체입니다. 난수 생성기는 섭씨 또는 화씨에서 데이터를 포함 하는 배열을 선택 하는 데 사용 됩니다.

    using System;
    using System.Text;
    
    public class Example
    {
       public static void Main()
       {
          Random rnd = new Random();
          string[] tempF = { "47.6F", "51.3F", "49.5F", "62.3F" };
          string[] tempC = { "21.2C", "16.1C", "23.5C", "22.9C" };
          string[][] temps = { tempF, tempC }; 
    
          StringBuilder sb = new StringBuilder();
          var f = new StringBuilderFinder(sb, "F");
          var baseDate = new DateTime(2013, 5, 1); 
          String[] temperatures = temps[rnd.Next(2)];
          bool isFahrenheit = false;
          foreach (var temperature in temperatures) {
             if (isFahrenheit)
                sb.AppendFormat("{0:d}: {1}\n", baseDate, temperature);
             else
                isFahrenheit = f.SearchAndAppend(String.Format("{0:d}: {1}\n", 
                                                 baseDate, temperature));
             baseDate = baseDate.AddDays(1);
          }            
          if (isFahrenheit) {
             sb.Insert(0, "Average Daily Temperature in Degrees Fahrenheit");
             sb.Insert(47, "\n\n");
          }
          else {
             sb.Insert(0, "Average Daily Temperature in Degrees Celsius");
             sb.Insert(44, "\n\n");
          }   
          Console.WriteLine(sb.ToString());
       }
    }
    
    public class StringBuilderFinder
    {
       private StringBuilder sb;
       private String text;
    
       public StringBuilderFinder(StringBuilder sb, String textToFind)
       {
          this.sb = sb;
          this.text = textToFind;
       }
    
       public bool SearchAndAppend(String stringToSearch)
       {
          sb.Append(stringToSearch);
          return stringToSearch.Contains(text);
       }
    }
    // The example displays output similar to the following:
    //    Average Daily Temperature in Degrees Celsius
    //    
    //    5/1/2013: 21.2C
    //    5/2/2013: 16.1C
    //    5/3/2013: 23.5C
    //    5/4/2013: 22.9C
    
  • 호출의 StringBuilder.ToString 변환 하는 메서드는 StringBuilder 개체를 한 String 개체입니다. 와 같은 메서드를 사용 하 여 문자열을 검색할 수 있습니다 String.LastIndexOf 또는 String.StartsWith, 또는 정규식을 사용할 수 있습니다 및 Regex 패턴을 검색 하는 클래스입니다. 때문에 모두 StringBuilderString 개체는 utf-16 인코딩 문자, 문자, 부분 문자열의 인덱스 위치를 저장을 사용 하 고 정규식 일치 항목은 두 개체가 모두에서 동일 합니다. 이렇게 하면 사용 하 여 StringBuilder 해당 텍스트에서 찾을 수 같은 위치에서 변경할 수 있도록 하는 메서드는 String 개체입니다.

    System_CAPS_note참고

    끝에서 작업 해야 하는 경우이 방법을 StringBuilder 반복적으로 변환 하지 않아도 되도록 해당 시작 하는 데는 개체는 StringBuilder 개체는 문자열입니다.

    다음 예제에서 이 방법을 보여 줍니다. 4 개에서 영어 알파벳의 각 문자를 저장 한 StringBuilder 개체입니다. 텍스트를 다음으로 변환 된 String 개체 및 정규식을 사용 하 여 각 4 자리 시퀀스의 시작 위치를 식별 합니다. 마지막으로, 첫 번째 시퀀스를 제외 하 고 각 4 자리 시퀀스 앞에 밑줄을 추가 하 고 대문자로 시퀀스의 첫 번째 문자를 변환 합니다.

    using System;
    using System.Text;
    using System.Text.RegularExpressions;
    
    public class Example
    {
       public static void Main()
       {
          // Create a StringBuilder object with 4 successive occurrences 
          // of each character in the English alphabet. 
          StringBuilder sb = new StringBuilder();
          for (ushort ctr = (ushort)'a'; ctr <= (ushort) 'z'; ctr++)
             sb.Append(Convert.ToChar(ctr), 4);
    
          // Create a parallel string object.
          String sbString = sb.ToString();
          // Determine where each new character sequence begins.
          String pattern = @"(\w)\1+";
          MatchCollection matches = Regex.Matches(sbString, pattern);
    
          // Uppercase the first occurrence of the sequence, and separate it
          // from the previous sequence by an underscore character.
          for (int ctr = matches.Count - 1; ctr >= 0; ctr--) { 
             Match m = matches[ctr];
             sb[m.Index] = Char.ToUpper(sb[m.Index]);
             if (m.Index > 0) sb.Insert(m.Index, "_");
          }
          // Display the resulting string.
          sbString = sb.ToString();
          int line = 0;
          do {
             int nChars = line * 80 + 79 <= sbString.Length ? 
                                 80 : sbString.Length - line * 80;
             Console.WriteLine(sbString.Substring(line * 80, nChars));
             line++;
          } while (line * 80 < sbString.Length);
       }
    }
    // The example displays the following output:
    //    Aaaa_Bbbb_Cccc_Dddd_Eeee_Ffff_Gggg_Hhhh_Iiii_Jjjj_Kkkk_Llll_Mmmm_Nnnn_Oooo_Pppp_
    //    Qqqq_Rrrr_Ssss_Tttt_Uuuu_Vvvv_Wwww_Xxxx_Yyyy_Zzzz
    
  • 사용 된 StringBuilder.Chars 속성에 있는 문자의 범위를 순차적으로 검색을 StringBuilder 개체입니다. 검색할 문자 수가 또는 검색 논리는 특히 복잡 한 경우이 방법은 실용적 아닐 수도 있습니다.

    다음 예제에서는 앞의 예제 기능에서 동일 하지만 구현에서 다릅니다. 사용 하 여는 Chars 문자 값이 변경 되는 시기를 감지 하는 속성이 해당 위치에 밑줄을 삽입 하 고 새 시퀀스의 첫 번째 문자를 대문자로 변환 합니다.

    using System;
    using System.Text;
    
    public class Example
    {
       public static void Main()
       {
          // Create a StringBuilder object with 4 successive occurrences 
          // of each character in the English alphabet. 
          StringBuilder sb = new StringBuilder();
          for (ushort ctr = (ushort) 'a'; ctr <= (ushort) 'z'; ctr++)
             sb.Append(Convert.ToChar(ctr), 4);
    
          // Iterate the text to determine when a new character sequence occurs.
          int position = 0;
          Char current = '\u0000';
          do {
             if (sb[position] != current) {
                current = sb[position];
                sb[position] = Char.ToUpper(sb[position]);
                if (position > 0) 
                   sb.Insert(position, "_");
                position += 2;
             }
             else {
                position++;
             }      
          } while (position <= sb.Length - 1);
          // Display the resulting string.
          String sbString = sb.ToString();
          int line = 0;
          do {
             int nChars = line * 80 + 79 <= sbString.Length ? 
                                 80 : sbString.Length - line * 80;
             Console.WriteLine(sbString.Substring(line * 80, nChars));
             line++;
          } while (line * 80 < sbString.Length);
       }
    }
    // The example displays the following output:
    //    Aaaa_Bbbb_Cccc_Dddd_Eeee_Ffff_Gggg_Hhhh_Iiii_Jjjj_Kkkk_Llll_Mmmm_Nnnn_Oooo_Pppp_
    //    Qqqq_Rrrr_Ssss_Tttt_Uuuu_Vvvv_Wwww_Xxxx_Yyyy_Zzzz
    
  • 수정 되지 않은 모든 텍스트에 저장는 StringBuilder 개체를 호출 하는 StringBuilder.ToString 변환 하는 메서드는 StringBuilder 개체를 String 에서 수정 작업을 수행 하 고 개체를 String 개체입니다. 약간만 수정;에 있는 경우이 방법을 사용할 수 있습니다. 비용을 변경할 수 없는 문자열 작업을 사용 하는 성능 이점을 부정할 수 있습니다 그렇지는 StringBuilder 개체입니다.

    다음 예제에서는 앞의 두 예제 기능에서 동일 하지만 구현에서 다릅니다. 생성 한 StringBuilder 개체,으로 변환 하는 String 개체를 다음 정규식을 사용 하 여 문자열에서 모든 나머지 수정 작업을 수행 하 합니다. Regex.Replace(String, String, MatchEvaluator) 메서드는 람다 식을 사용 하 여 각 일치 항목에 바꾸기를 수행 합니다.

    using System;
    using System.Text;
    using System.Text.RegularExpressions;
    
    public class Example
    {
       public static void Main()
       {
          // Create a StringBuilder object with 4 successive occurrences 
          // of each character in the English alphabet. 
          StringBuilder sb = new StringBuilder();
          for (ushort ctr = (ushort)'a'; ctr <= (ushort) 'z'; ctr++)
             sb.Append(Convert.ToChar(ctr), 4);
    
          // Convert it to a string.
          String sbString = sb.ToString();
    
          // Use a regex to uppercase the first occurrence of the sequence, 
          // and separate it from the previous sequence by an underscore.
          string pattern = @"(\w)(\1+)";
          sbString = Regex.Replace(sbString, pattern, 
                                   m => (m.Index > 0 ? "_" : "") + 
                                   m.Groups[1].Value.ToUpper() + 
                                   m.Groups[2].Value);
    
          // Display the resulting string.
          int line = 0;
          do {
             int nChars = line * 80 + 79 <= sbString.Length ? 
                                 80 : sbString.Length - line * 80;
             Console.WriteLine(sbString.Substring(line * 80, nChars));
             line++;
          } while (line * 80 < sbString.Length);
       }
    }
    // The example displays the following output:
    //    Aaaa_Bbbb_Cccc_Dddd_Eeee_Ffff_Gggg_Hhhh_Iiii_Jjjj_Kkkk_Llll_Mmmm_Nnnn_Oooo_Pppp_
    //    Qqqq_Rrrr_Ssss_Tttt_Uuuu_Vvvv_Wwww_Xxxx_Yyyy_Zzzz
    

변환 해야는 StringBuilder 개체를 String 전에 나타내는 문자열을 전달할 수 있습니다는 StringBuilder 변수가 있는 메서드에 개체는 String 매개 변수 또는 사용자 인터페이스에 표시 합니다. 호출 하 여이 변환을 수행 된 StringBuilder.ToString 메서드. 예시의 경우에 대 한 참조를 호출 하는 이전 예제에서는 ToString 변환 하는 메서드는 StringBuilder 정규식 메서드에 전달 될 수 있도록 개체는 문자열입니다.

호출자 참고 사항:

에.NET Framework 4 및 .NET Framework 4.5, 를 인스턴스화할 때는 StringBuilder 를 호출 하 여 개체는 StringBuilder(Int32, Int32) 생성자, 길이 및의 용량이 모두는 StringBuilder 인스턴스 값 이상으로 증가할 수 해당 MaxCapacity 속성. 특히 호출 하는 경우 발생할 수 있습니다는 AppendAppendFormat 작은 문자열을 추가 하는 방법입니다.

다음 예제는 많은에 정의 된 메서드를 호출 하는 방법을 StringBuilder 클래스입니다.

using System;
using System.Text;

public sealed class App 
{
    static void Main() 
    {
        // Create a StringBuilder that expects to hold 50 characters.
        // Initialize the StringBuilder with "ABC".
        StringBuilder sb = new StringBuilder("ABC", 50);

        // Append three characters (D, E, and F) to the end of the StringBuilder.
        sb.Append(new char[] { 'D', 'E', 'F' });

        // Append a format string to the end of the StringBuilder.
        sb.AppendFormat("GHI{0}{1}", 'J', 'k');

        // Display the number of characters in the StringBuilder and its string.
        Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString());

        // Insert a string at the beginning of the StringBuilder.
        sb.Insert(0, "Alphabet: ");

        // Replace all lowercase k's with uppercase K's.
        sb.Replace('k', 'K');

        // Display the number of characters in the StringBuilder and its string.
        Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString());
    }
}

// This code produces the following output.
//
// 11 chars: ABCDEFGHIJk
// 21 chars: Alphabet: ABCDEFGHIJK

유니버설 Windows 플랫폼
8 이후 사용 가능
.NET Framework
1.1 이후 사용 가능
이식 가능한 클래스 라이브러리
이식 가능한 .NET 플랫폼 에서 지원됨
Silverlight
2.0 이후 사용 가능
Windows Phone Silverlight
7.0 이후 사용 가능
Windows Phone
8.1 이후 사용 가능

이 형식의 모든 public static(Visual Basic의 공유 Visual Basic의 경우) 멤버는 스레드로부터 안전합니다. 인스턴스 멤버는 스레드로부터의 안전이 보장되지 않습니다.

맨 위로 이동
표시: