본문 바로가기
Unity/C#

[C#] string Builder

by Kyoung2 2023. 1. 2.
반응형

우리는 C#에서 코딩을 할때, 문자를 조합해야할 일이 생긴다.

 

일반적인 사용법

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CodePractice : MonoBehaviour
{

    public string mString = "Taek";
    public string bString = "blog";
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log(PracticeStringBuilder());

        Debug.Log(mString + bString);
    }


    public string PracticeStringBuilder()
    {
        string fusion = mString + bString;
        return fusion;
    }

}

이렇게 + 연산자를 사용하여 String 두개를 합쳐주는 형태로 진행한다. 

 - 이러한 형태는 인스턴스를 생성하게 되며 가비지 콜랙터에서 오버헤드를 일으키는 치명적인 요소로 자리 잡고 있습니다.

출처 : .Net 홈페이지 https://learn.microsoft.com/ko-kr/dotnet/standard/base-types/stringbuilder

 

 

이를 해결하기위해 Stringbuilder를 사용하는데요.

using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;

public class CodePractice : MonoBehaviour
{

    public string mString = "Taek";
    public string bString = "blog";
    // Start is called before the first frame update
    void Start()
    {
        PracticeStringBuilder();
    }
    public void  PracticeStringBuilder()
    {
        StringBuilder str = new StringBuilder();
        str.Append(mString);
        str.Append(bString);
        Debug.Log(str.ToString());
    }

}

캡슐화되는 문자열에서 문자 수를 확장할 수 있는 동적 개체이지만, 보관할 수 있는 최대 문자 수 값을 지정할 수 있습니다. 

 

사용법에 대한 내용을 코드로 정리한 예제 이다.

 

using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;

public class CodePractice : MonoBehaviour
{

    public string mString = "Taek";
    public string bString = "blog";
    // Start is called before the first frame update
    void Start()
    {
        PracticeStringAppend();
        StringBuilderInsert();
        RemoveString();
        ReplaceString();
    }
    public void PracticeStringAppend()
    {
        // 요소 끝에 String 배열을 추가
        StringBuilder str = new StringBuilder();
        str.Append(mString);
        str.Append(bString);
        Debug.Log(str.ToString());
    }

    public void StringBuilderInsert()
    {
        // 선택한 자리에 다른 String 요소를 집어 넣는다.
        StringBuilder istr = new StringBuilder(mString);
        istr.Insert(1, "aaaaaa");
        Debug.Log(istr.ToString());
    }

    public void RemoveString()
    {
        //특정 지점에서 길이만큼 삭제한다.
        StringBuilder rstr = new StringBuilder(bString);
        rstr.Remove(1, 2);
        Debug.Log(rstr.ToString());
    }

    public void ReplaceString()
    {
        //특정 char 요소를 변경한다.
        StringBuilder restr = new StringBuilder(mString);
        restr.Replace('T', 'B');
        Debug.Log(restr.ToString());
    }

}

 

결과 

 

728x90
반응형

'Unity > C#' 카테고리의 다른 글

[C#] 제네릭  (0) 2023.05.15
[C#] 박싱 과 언박싱 (boxing & unboxing)  (0) 2023.02.20
[C#] DateTime  (6) 2022.08.22
[Unity/C#] C# 코딩 규칙  (0) 2022.08.21
[C#] Byte[] 바이트 배열 string 변환  (0) 2022.08.21

# 로딩 화면 동작 코드(Code) 설정하기
loading