여러 문자열을 연결 하는 방법 (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 문자열을 빈 문자열과 동일하게 처리합니다.
자리 표시자에 사용되는 모든 식이 상수 문자열인 경우 문자열 보간을 사용하여 상수 문자열을 초기화할 수 있습니다.
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
마지막으로 LINQ 및 Enumerable.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
메서드를 사용하여 컬렉션을 연결합니다.
더 보기
.NET