C#에서 문자열은 변경할 수 없습니다. 즉, 문자열은 일단 생성되면 수정할 수 없습니다. 문자열을 수정하면 수정 사항이 포함된 새 문자열이 반환되지만 원래 문자열은 변경되지 않습니다.
string word = "aaabbbccc"; string newWord = word.Replace('b', 'd'); Console.WriteLine(word); // prints aaabbbccc Console.WriteLine(newWord); // prints aaadddccc
StringBuilder 클래스는 수정 가능한 문자열과 유사한 객체, 즉 변경 가능한 문자열을 나타냅니다. 불변 문자열을 표현하는 스트링 타입과 다르게 구현됩니다.
문자열 객체를 수정하면 복사본이 생성되므로, 문자열 객체를 반복적으로 수정하면 성능이 저하될 수 있습니다. 작은 반복의 경우 무시할 수 있지만 큰 루프의 경우 중요할 수 있습니다. StringBuilder는 문자를 추가, 삭제, 교체 또는 삽입하여 문자열을 수정하는 효율적인 대안을 제공합니다.
StringBuilder는 문자를 보관하기 위해 내부 버퍼를 유지합니다. 버퍼에 여유 공간이 있으면 새 데이터가 추가됩니다. 그렇지 않으면 새 버퍼를 만들고 이전 데이터를 새 버퍼에 복사한 다음 데이터를 추가합니다.
var sb = new StringBuilder(); for (int i = 0; i < 10; i++){ sb.Append("a"); } Console.WriteLine(sb.ToString()); // prints aaaaaaaaaa
다음은 StringBuilder 개체를 구성하는 다양한 방법입니다.
// Initialize a new instance of StringBuilder var sb1 = new StringBuilder(); // Initialize a new instance of StringBuilder using the given capacity var sb2 = new StringBuilder(capacity: 10); // Initialize a new instance of StringBuilder with the given string var sb3 = new StringBuilder(value: "Hello World"); // Initialize a new instance of StringBuilder with the given capacity and the maximum capacity it can grow to var sb4 = new StringBuilder(capacity: 20, maxCapacity: 10); // Initialize a new instance of StringBuilder with the given string and capacity var sb5 = new StringBuilder(value: "Hello", capacity: 20); // Initialize a new instance of StringBuilder from the given substring and capacity var sb6 = new StringBuilder(value: "Hello World", startIndex: 0, length: 5, capacity: 20);
StringBuilder 클래스에는 객체의 현재 문자 수를 나타내는 길이 속성이 있습니다. 개체에 더 많은 문자가 추가되면 해당 용량에 도달할 때까지 길이가 늘어납니다. 이는 개체가 현재 포함할 수 있는 최대 문자 수를 정의합니다.
추가된 문자 수로 인해 길이가 현재 용량을 초과하는 경우 클래스는 용량을 결합하여 새 메모리를 할당합니다. 그런 다음 새 문자가 개체에 추가되고 길이 속성이 조정됩니다.
StringBuilder는 MaxCapacity 속성 값에 도달할 때까지 동적으로 추가 메모리를 계속 추가합니다. 그 후에는 해당 개체에 더 이상 메모리를 할당할 수 없습니다. 개체에 더 많은 데이터를 추가하려고 하면 ArgumentOutOfRangeException 또는 OutOfMemoryException 예외가 발생합니다.
StringBuilder는 문자열을 쉽게 수정할 수 있도록 다음과 같은 메서드를 제공합니다.
Append - 지정된 개체의 문자열 표현을 이 인스턴스에 추가합니다.
AppendFormat< /strong> - 복합 형식 문자열(0개 이상의 형식 항목 포함)을 처리하여 반환된 문자열을 이 인스턴스에 추가합니다. 각 형식 항목은 해당 개체 매개변수의 문자열 표현으로 대체됩니다.
AppendJoin - 각 멤버 사이에 지정된 구분 기호를 사용하여 제공된 배열에 있는 요소의 문자열 표현 개체를 조인하고 결과를 문자열 작성기의 현재 인스턴스에 추가합니다.
AppendLine - 현재 StringBuilder 개체의 끝에 기본 줄 종결자를 추가합니다.
Clear - 현재 StringBuilder 인스턴스에서 모든 문자를 제거합니다.
CopyTo - 문자를 대상 문자 범위 또는 문자 배열에 복사합니다.
EnsureCapacity - 이 StringBuilder 인스턴스의 용량이 최소한 지정된 값인지 확인합니다.
Equals − 이 인스턴스와 제공된 인스턴스의 문자열, 용량 및 MaxCapacity 값이 동일한 경우 true를 반환합니다.
GetChunks - 문자 덩어리를 반복하는 데 사용할 수 있는 개체를 반환합니다.
Insert - 지정된 개체의 문자열 표현을 이 인스턴스의 지정된 문자 위치에 삽입합니다.
delete - 이 인스턴스에서 지정된 문자 범위를 제거합니다.
Replace - 이 인스턴스에서 지정된 문자 또는 문자열의 모든 항목을 다른 지정된 문자 또는 문자열로 바꿉니다.
ToString - 현재 인스턴스를 문자열로 변환합니다.
라이브 시연
using System; using System.Text; class Program{ static void Main(string[] args){ string word = "aaabbbccc"; string newWord = word.Replace('b', 'd'); Console.WriteLine(word); // prints aaabbbccc Console.WriteLine(newWord); // prints aaadddccc var sb = new StringBuilder(); for (int i = 0; i < 10; i++){ sb.Append("a"); } Console.WriteLine(sb.ToString()); // prints aaaaaaaaaa // Initialize a new instance of StringBuilder var sb1 = new StringBuilder(); // Initialize a new instance of StringBuilder using the given capacity var sb2 = new StringBuilder(capacity: 10); // Initialize a new instance of StringBuilder with the given string var sb3 = new StringBuilder(value: "Hello World"); // Initialize a new instance of StringBuilder with the given capacity and the maximum capacity it can grow to var sb4 = new StringBuilder(capacity: 20, maxCapacity: 50); // Initialize a new instance of StringBuilder with the given string and capacity var sb5 = new StringBuilder(value: "Hello", capacity: 20); // Initialize a new instance of StringBuilder from the given substring and capacity var sb6 = new StringBuilder(value: "Hello World", startIndex: 0, length: 5, capacity: 20); } }
aaabbbccc aaadddccc aaaaaaaaaa
위 내용은 C#에서 StringBuilder 클래스의 목적은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!