English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C#에서 문자열 타입은 불변입니다. 이는 문자열이 생성되면 변경할 수 없다는 것을 의미합니다. 예를 들어, 새 문자열 "Hello World!"은 스택에 메모리 공간을 차지합니다. 지금, 초기 문자열 "Hello World!"을 "Hello World! from Tutorials Teacher"로 변경하면 메모리 스택에 새 문자열 객체가 생성되고, 원래 문자열은 같은 메모리 주소에서 수정되지 않습니다. 원래 문자열에 여러 번 대체, 추가, 제거 또는 새 문자열을 삽입하여 변경하는 경우, 이 동작은 성능에 영향을 미칠 수 있습니다.
문자열 객체의 메모리 할당
이 문제를 해결하기 위해 C#는 System.Text 네임스페이스에서 StringBuilder를 도입했습니다. StringBuilder는 메모리에서 새 객체를 생성하지 않고, 수정된 문자열을 수용할 수 있도록 메모리를 동적으로 확장합니다.
StringBuilder 객체의 메모리 할당
new 키워드를 사용하여 초기 문자열을 전달하여 StringBuilder 클래스의 객체를 생성할 수 있습니다. 다음 예제는 StringBuilder 객체를 생성하는 방법을 보여줍니다.
using System.Text; //구현 StringBuilder sb = new StringBuilder(); //그 뒤에 문자열을 추가할 예정입니다. //또는 StringBuilder sb = new StringBuilder("Hello World!");
또한, StringBuilder 객체의 최대 용량을 지정할 수 있는 재정의된 생성자를 사용할 수 있습니다. 다음과 같이 사용할 수 있습니다.
StringBuilder sb = new StringBuilder(50); //그 뒤에 문자열을 추가할 예정입니다. //또는 StringBuilder sb = new StringBuilder("Hello World!", 50);
위에서 설명한 것처럼, C#는 최대50개의 공간. 지정된 용량에 도달하면 이 용량은 자동으로 두 배로 증가합니다. 또한 capacity나 length 속성을 사용하여 StringBuilder 객체의 용량을 설정하거나 검색할 수 있습니다.
for 루프를 사용하여 지정된 인덱스 위치의 문자를 가져오거나 설정할 수 있습니다.
StringBuilder sb = new StringBuilder("Hello World!"); for(int i = 0; i < sb.Length; i++{ Console.Write(sb[i]); // 출력: Hello World! }
StringBuilder는 문자열이 아닙니다. ToString() 메서드를 사용하여 StringBuilder 객체에서 문자열을 검색하세요.
StringBuilder sb = new StringBuilder("Hello World!"); var greet = sb.ToString(); //“ Hello World!”을 반환합니다.
Append() 메서드를 사용하여 현재 StringBuilder 객체의 끝에 문자열을 추가합니다. StringBuilder가 아무 문자도 포함하지 않으면 그것을 추가합니다. AppendLine() 메서드는 문자열의 끝에 개행 문자를 추가합니다.
StringBuilder sb = new StringBuilder(); sb.Append("Hello "); sb.AppendLine("World!"); sb.AppendLine("Hello C#"); Console.WriteLine(sb);
Hello World! Hello C#
AppendFormat() 메서드를 사용하여 입력 문자열을 지정된 형식으로 포맷하고 그것을 추가합니다.
StringBuilder sbAmout = new StringBuilder("您的总金额为 "); sbAmout.AppendFormat("{0:C} ", 25); Console.WriteLine(sbAmout);//출력: 您的总金额为$25.00
Insert() 메서드를 사용하여 StringBuilder 객체의 지정된 인덱스에 문자열을 삽입합니다.
StringBuilder sb = new StringBuilder("Hello World!"); sb.Insert(5," C#"); Console.WriteLine(sb); //출력: Hello C# World!
Remove() 메서드를 사용하여 지정된 인덱스에서 문자열을 지정된 길이까지 제거합니다.
StringBuilder sb = new StringBuilder("Hello World!",50); sb.Remove(6, 7); Console.WriteLine(sb); //출력: 你好
Replace() 메서드를 사용하여 지정된 문자열이 모두 나타나는 문자열을 지정된 대체 문자열로 변경합니다.
StringBuilder sb = new StringBuilder("Hello World!"); sb.Replace("World", "C# "); Console.WriteLine(sb);//출력: Hello C#!
StringBuilder는 변경 가능합니다。
StringBuilder는 문자열을 연결할 때 string보다 빠르게 실행됩니다。
세 개나 네 개 이상의 문자열을 연결할 때 StringBuilder를 사용하세요。
StringBuilder 객체에 문자열을 추가하거나 연결하려면 Append() 메서드를 사용하세요。
StringBuilder 객체에서 문자열을 검색하려면 ToString() 메서드를 사용하세요。