다음을 통해 공유


여러 문자열 연결 방법(C# 가이드)

연결은 한 문자열을 다른 문자열의 끝에 추가하는 프로세스입니다. + 연산자를 사용하여 문자열을 연결합니다. 문자열 리터럴 및 문자열 상수의 경우 연결 시 컴파일이 발생하며, 런타임 연결은 발생하지 않습니다. 문자열 변수의 경우 연결은 런타임에서만 발생합니다.

참고 항목

이 문서의 C# 예제는 Try.NET 인라인 코드 러너 및 놀이터에서 실행됩니다. 대화형 창에서 예제를 실행하려면 실행 버튼을 선택합니다. 코드를 실행하면 실행을 다시 선택하여 코드를 수정하고 수정된 코드를 실행할 수 있습니다. 수정된 코드는 대화형 창에서 실행되거나, 컴파일이 실패하면 대화형 창에 모든 C# 컴파일러 오류 메시지가 표시됩니다.

문자열 리터럴

다음 예제에서는 소스 코드의 가독성을 향상하기 위해 긴 문자열 리터럴을 작은 문자열로 분할합니다. 이 코드에서는 작은 문자열을 연결하여 긴 문자열 리터럴을 만듭니다. 컴파일 시간에 부분이 연결되어 단일 문자열이 됩니다. 이 경우 처리되는 문자열 수와 관계없이 런타임 성능에 미치는 영향은 없습니다.

// Concatenation of literals is performed at compile time, not run time.
string text = "Historically, the world of data and the world of objects " +
"have not been well integrated. Programmers work in C# or Visual Basic " +
"and also in SQL or XQuery. On the one side are concepts such as classes, " +
"objects, fields, inheritance, and .NET Framework APIs. On the other side " +
"are tables, columns, rows, nodes, and separate languages for dealing with " +
"them. Data types often require translation between the two worlds; there are " +
"different standard functions. Because the object world has no notion of query, a " +
"query can only be represented as a string without compile-time type checking or " +
"IntelliSense support in the IDE. Transferring data from SQL tables or XML trees to " +
"objects in memory is often tedious and error-prone.";

System.Console.WriteLine(text);

++= 연산자

문자열 변수를 연결하려면 + 또는 += 연산자, 문자열 보간 또는 String.Format, String.Concat, String.Join 또는 StringBuilder.Append 메서드를 사용할 수 있습니다. + 연산자는 사용하기 쉽고 직관적인 코드를 만듭니다. 하나의 문에서 여러 + 연산자를 사용해도 문자열 콘텐츠는 한 번만 복사됩니다. 다음 코드는 ++= 연산자를 사용하여 문자열을 연결하는 예제를 보여줍니다.

string userName = "<Type your name here>";
string dateString = DateTime.Today.ToShortDateString();

// Use the + and += operators for one-time concatenations.
string str = "Hello " + userName + ". Today is " + dateString + ".";
System.Console.WriteLine(str);

str += " How are you today?";
System.Console.WriteLine(str);

문자열 보간

일부 식에서는 다음 코드와 같이 문자열 보간을 사용하여 문자열을 연결하는 것이 더 쉽습니다.

string userName = "<Type your name here>";
string date = DateTime.Today.ToShortDateString();

// Use string interpolation to concatenate strings.
string str = $"Hello {userName}. Today is {date}.";
System.Console.WriteLine(str);

str = $"{str} How are you today?";
System.Console.WriteLine(str);

참고 항목

문자열 연결 연산에서 C # 컴파일러는 null 문자열을 빈 문자열과 동일하게 처리합니다.

C# 10부터 자리 표시자에 사용되는 모든 식이 상수 문자열인 경우 문자열 보간을 사용하여 상수 문자열을 초기화할 수 있습니다.

String.Format

문자열을 연결하는 다른 메서드는 String.Format입니다. 이 메서드는 작은 수의 구성 요소 문자열에서 문자열을 빌드할 때 잘 작동합니다.

StringBuilder

다른 경우는 결합하는 소스 문자열의 개수를 모르는 루프에서 문자열을 결합할 수 있으며 소스 문자열의 실제 개수는 클 수 있습니다. StringBuilder 클래스는 이러한 시나리오를 위해 설계되었습니다. 다음 코드는 StringBuilder 클래스의 Append 메서드를 사용하여 문자열을 연결합니다.

// Use StringBuilder for concatenation in tight loops.
var sb = new System.Text.StringBuilder();
for (int i = 0; i < 20; i++)
{
    sb.AppendLine(i.ToString());
}
System.Console.WriteLine(sb.ToString());

문자열 연결 또는 StringBuilder 클래스를 선택하는 이유에 대해 자세히 읽을 수 있습니다.

String.Concat 또는 String.Join

컬렉션의 문자열을 조인하는 또 다른 옵션은 String.Concat 메서드를 사용하는 것입니다. 구분 기호가 소스 문자열을 구분해야 하는 경우 String.Join 메서드를 사용합니다. 다음 코드는 두 메서드 모두를 사용하여 단어 배열을 결합합니다.

string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };

var unreadablePhrase = string.Concat(words);
System.Console.WriteLine(unreadablePhrase);

var readablePhrase = string.Join(" ", words);
System.Console.WriteLine(readablePhrase);

LINQ 및 Enumerable.Aggregate

마지막으로 LINQEnumerable.Aggregate 메서드를 사용하여 컬렉션의 문자열을 조인할 수 있습니다. 이 메서드는 람다 식을 사용하여 소스 문자열을 결합합니다. 람다 식은 각 문자열을 기존의 누적 문자열에 추가하는 작업을 수행합니다. 다음 예제에서는 배열의 각 단어 사이에 공백을 추가하여 단어 배열을 결합합니다.

string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };

var phrase = words.Aggregate((partialPhrase, word) =>$"{partialPhrase} {word}");
System.Console.WriteLine(phrase);

이 옵션을 사용하면 반복할 때마다 중간 문자열을 만들므로 컬렉션을 연결하는 다른 메서드보다 할당이 늘어날 수 있습니다. 성능 최적화가 중요한 경우 Enumerable.Aggregate 대신 StringBuilder 클래스나 String.Concat 또는 String.Join 메서드를 사용하여 컬렉션을 연결하는 것이 좋습니다.

참고 항목