String
String 개체는 변경할 수 없다. System.String 클래스에서 메서드 중 하나를 사용할 때마다 메모리에 새 문자열 개체가 생성되므로, 새 개체에 대한 공간을 새로 할당 되어진다. 그러므로 문자열을 반복적으로 수정해야 하는 경우 메모리 낭비가 발생되어 비효율적인 코드가 생성된다.
string example = "string";
Console.WriteLine(example);
example = "Hello";
Console.WriteLine(example);
StringBuilder
01 System.Text 네임 스페이스 가져오기
StringBuilder 클래스는 System.Text 네임스페이스에 있으므로 using문에 System.Text를 추가한다.
using System;
using System.Text;
02 StringBuilder 객체 인스턴스화 및 초기화
// StringBuilder 객체 인스턴스화 및 초기화
StringBuilder myStringBuilder = new StringBuilder("Hello World");
객체, 인스턴스화 차이 알아보기
클래스 - 객체들을 소프트웨어 내에서 구현하기 위해 만든 설계도
인스턴스화 - 클래스를 가지고 객체를 만드는 일 (ex) 설계도로부터 실체를 만들어 내는 일)
인스턴스(객체) - 클래스의 실현체 (ex) 설계도로부터 만들어낸 실체, 클래스가 붕어빵 틀이라면 붕어빵 하나하나가 클래스의 인스턴스)
객체 - 자신의 속성을 가지고 있고, 다른 것과 식별 가능한
클래스 -> 인스턴스화 -> 인스턴스
03 SringBuilder 용량 및 길이 설정
StringBuilder는 문자 수를 확장할 수 있는 동적 개체지만 보관할 수 있는 최대 문자수 값을 지정할 수 있다.
StringBuilder myStringBuilder = new StringBuilder("Hello World",25);
04 Append
Append 메서드를 사용하여 문자열 끝에 추가할 수 있다.
public System.Text.StringBuilder Append (System.Text.StringBuilder? value);
StringBuilder myStringBuilder = new StringBuilder("Hello World",25);
myStringBuilder.Append("Hi");
Console.WriteLine(myStringBuilder);
05 AppendLine
현재 StringBuilder 객체 끝에 지정한 문자열의 복사본과 기본줄 종결자를 추가한다.
public System.Text.StringBuilder AppendLine (String);
StringBuilder sb = new StringBuilder();
sb.AppendLine("First Line");
sb.AppendLine("Second Line");
sb.AppendLine("Third Line");
Console.WriteLine(sb.ToString());
06 Insert
지정된 개체의 문자열 표현을 지정된 문자 위치에 있는 인스턴스에 삽입한다.
public System.Text.StringBuilder Insert (int index, string? value);
매개변수
int index : insert 시작 인스턴스 내의 위치
string value : 삽입할 문자열
지정된 위치에 개체를 추가할 수 있다.
StringBuilder myStringBuilder = new StringBuilder("Hello World",25);
myStringBuilder.Insert(5,"Hi");
Console.WriteLine(myStringBuilder);
07 Remove
인덱스를 기준으로 지정된 수의 문자를 제거할 수 있다.
public System.Text.StringBuilder Remove (int startIndex, int length);
매개변수
startIndex : 제거가 시작되는 위치
length : 제거할 문자 갯수
StringBuilder myStringBuilder = new StringBuilder("HelloHiWorld", 25);
myStringBuilder.Remove(5, 2);
Console.WriteLine(myStringBuilder);
08 Replace
public System.Text.StringBuilder Replace (char oldChar, char newChar);
public System.Text.StringBuilder Replace (char oldChar, char newChar, int startIndex, int count);
public System.Text.StringBuilder Replace (String oldString, String newString);
매개변수
oldChar : 바꿀 문자
newChar : oldChar를 바꾸는 문자
startIndex : 부분 문자열이 시작되는 인스턴스 내 위치
count : 부분 문자열 길이
StringBuilder myStringBuilder = new StringBuilder("HelloHiWorld", 25);
myStringBuilder.Replace("H", "Z");
myStringBuilder.Replace("Zello", "Hello");
Console.WriteLine(myStringBuilder);
08 AppendFormat
public System.Text.StringBuilder AppendFormat (string format, object? arg0, object? arg1);
매개변수
format String : 복합 형식 문자열
arg0 Object : 서식을 지정할 첫 번째 개체
arg1 Object : 서식을 지정할 두 번째 개체
int a = 123;
double b = 12.3;
string c = "abcd";
string[] d= {"cat", "dog", "duck" };
StringBuilder sb = new StringBuilder();
sb.AppendFormat($"1번 {a} ");
Console.WriteLine(sb.ToString());
sb.AppendFormat($"2번 {b} ");
Console.WriteLine(sb.ToString());
sb.AppendFormat($"3번 {a} {b} ");
Console.WriteLine(sb.ToString());
sb.AppendFormat("4번 {0} {1} {2}",d);
Console.WriteLine(sb.ToString());
09 ToString
인스턴스의 값을 String으로 변환
public override string ToString ();
StringBuilder sb = new StringBuilder("Hello");
Console.WriteLine($"{sb.Length} chars : {sb.ToString()}");
참고
https://learn.microsoft.com/ko-kr/dotnet/api/system.text.stringbuilder?view=net-7.0
https://learn.microsoft.com/ko-kr/dotnet/standard/base-types/stringbuilder
'코딩테스트 준비 > 자료구조 & 알고리즘' 카테고리의 다른 글
C# - Dictionary(찾기, 추가, 제거, 출력 메서드) (0) | 2023.04.14 |
---|---|
C# - List (찾기, 추가, 제거, 정렬 메서드) (0) | 2023.04.13 |
C# - String (찾기, 변형, 분할, 제거 메서드) (0) | 2023.04.13 |
C# - 두 변수 값 교환 하는 법 (0) | 2023.04.12 |
C# - 배열에서 최댓값 최솟값 (0) | 2023.04.11 |
댓글