본문 바로가기
C#

string char 변환, StringBuilder

by 개발하는 디토 2022. 9. 5.

string 문자열은 character(문자)의 집합.

string.ToCharArray()로 문자열 -> 문자 배열

new string(char[])을 활용해 문자 배열 -> 문자열 변환이 가능하다.

string a = "hello";

// 문자열을 char 배열로 변환
char[] aChar = a.ToCharArray();

// char 배열을 문자열로 변환
string b1 = new string(aChar);
string b2 = string.concat(aChar);
string b3 = string.Join("", aChar);

문자열은 Immutable type이라 특정 string 변수의 값을 수정할 경우, 해당 주소에서 값을 바꾸는 것이 아니라, 다른 주소에 새로운 문자열 값을 만든 뒤, 변수가 다른 주소를 참조하게 만드는 식이라 한다.

따라서 문자열에 갱신이 많이 일어나는 경우 string을 사용하기보다 StringBuilder class를 사용하는 것이 좋다고.

 

StringBuilder를 사용하기 위해서는 using System.Text를 적어주어야 한다.

using System;
using System.Text;


namespace StringBuilderPractice
{
    internal class Program
    {
        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder("numbers", 10);
            sb.Append(new char[]{'1', '2', '3'}); //char 배열로 추가
            sb.Append("456"); // 문자열로 추가
            
            sb.replace('4', '넷'); // StringBuilder 내부의 모든 4를 넷으로 변경
            sb.Insert(3, '4'); // 특정 위치에 문자열 넣기
            sb.Insert(0, "StringBuilder Test: ");
            
            Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString()); // 문자열 길이, 내용 출력
            
        }
    }
}

 

StringBuilder를 선언할 때 크기를 10으로 지정했어도 Append 등을 통해 길이가 늘어나면 StringBuilder.MaxCapacity에 도달하기 전까지는 계속 크기가 커진다.

 

StringBuilder 공식 문서

 

StringBuilder 클래스 (System.Text)

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

docs.microsoft.com

 

댓글