C#/문자열

[C#]문자열 배열을 문자열로 변환(String Array to String)

DevStory 2022. 8. 15.

문자열 배열을 문자열로 변환

이번 포스팅은 C#에서 문자열 배열을 문자열로 변환하는 방법을 소개합니다.


Join 메서드

첫 번째 방법은 string 클래스의 Join() 메서드를 사용하는 방법입니다.

 

Join() 메서드는 두 개의 매개변수를 가집니다. 첫 번째 매개변수는 문자열을 구분하는 기호이며, 두 번째 매개변수는 문자열 배열입니다.

 

첫 번째 매개변수에 빈 문자열을 전달하여 문자열 배열을 문자열로 변환할 수 있습니다.

class Program
{
  static void Main(string[] args)
  {
    string[] strArray = { "AB", "CD", "EF" };
    string strArrayToString = string.Join("", strArray);

    Console.WriteLine(strArrayToString);
  }
}

[실행 결과]

ABCDEF

Concat 메서드

두 번째 방법은 string 클래스의 Concat() 메서드를 사용하는 방법입니다.

 

Concat() 메서드에 문자열 배열을 전달하면, 문자열이 합쳐진 하나의 문자열을 반환합니다.

class Program
{
  static void Main(string[] args)
  {
    string[] strArray = { "AB", "CD", "EF" };
    string strArrayToString = string.Concat(strArray);

    Console.WriteLine(strArrayToString);
  }
}

[실행 결과]

ABCDEF

StringBuilder의 Append 메서드

세 번째 방법은 StringBuilder 클래스의 Append() 메서드를 사용하는 방법입니다.

 

StringBuilder 클래스는 System.Text 네임스페이스에 존재하므로 아래 using 문을 추가해야 합니다.

using System.Text;

문자열 배열의 길이만큼 반복문을 실행하여 StringBuilder 객체에 배열의 요소를 하나씩 추가합니다.

 

반복문이 종료되면 ToString() 메서드를 사용하여 StringBuilder 객체에 추가된 문자열을 하나의 문자열로 반환합니다.

class Program
{
  static void Main(string[] args)
  {
    string[] strArray = { "AB", "CD", "EF" };
    StringBuilder stringBuilder = new StringBuilder();

    for (int i = 0; i < strArray.Length; i++)
    {
      stringBuilder.Append(strArray[i]);
    }

    string strArrayToString = stringBuilder.ToString();

    Console.WriteLine(strArrayToString);
  }
}

[실행 결과]

ABCDEF

추천하는 방법

StringBuilder 클래스를 사용하여 문자열 배열을 문자열로 변환하는 것이 좋습니다.

 

+ 연산자 또는 Concat() 메서드를 사용하여 문자열 배열을 문자열로 변환하는 경우 메모리를 비효율적으로 사용하기 때문입니다.

 

문자열은 Heap 영역에 생성되는데, Concat() 메서드를 사용하여 문자열을 연결하면 Heap 영역에는 다음과 같이 문자열이 생성됩니다.

class Program
{
  static void Main(string[] args)
  {
    string[] strArray = { "AB", "CD", "EF", "GH" };
    string strArrayToString = string.Concat(strArray);

    Console.WriteLine(strArrayToString);
  }
}

[Heap 영역]

 

Concat() 메서드에 의해 Heap 영역에 문자열 "ABCD, "ABCDEF"의 공간이 할당됩니다.

 

하지만, 다음과 StringBuilder 클래스를 사용하여 문자열을 연결하면 하나의 공간만 할당됩니다.

class Program
{
  static void Main(string[] args)
  {
    string[] strArray = { "AB", "CD", "EF" };
    StringBuilder stringBuilder = new StringBuilder();

    for (int i = 0; i < strArray.Length; i++)
    {
      stringBuilder.Append(strArray[i]);
    }

    string strArrayToString = stringBuilder.ToString();

    Console.WriteLine(strArrayToString);
  }
}

[Heap 영역]

 

StringBuilder 클래스는 Heap 영역의 메모리 공간을 효율적으로 사용하므로 낭비되는 공간이 없습니다.

 

따라서, Concat() 메서드보다 효율적입니다.

반응형

댓글