C에서 문자열 연결#

Tip

이 문서는 이미 하나 이상의 프로그래밍 언어를 알고 있으며 C#을 학습하는 개발자를 위한 기본 사항 섹션의 일부입니다. 프로그래밍을 처음 접하는 경우 먼저 시작 자습서로 시작 하세요.

다른 언어에서 오시겠습니까? +를 사용한 C# 문자열 연결은 Java 및 JavaScript와 유사합니다. C#은 변수를 사용해 문자열을 만드는 기본 방법으로, JavaScript의 템플릿 리터럴과 Python의 f-문자열과 유사한 문자열 보간($"{x}")을 도입했습니다. 루프에서 문자열을 빌드하기 위해 C#은 Java 같은 기능을 StringBuilder제공합니다StringBuilder.

연결 은 하나의 문자열을 다른 문자열의 끝에 추가하여 새 문자열을 생성합니다. C#은 연결할 수 있는 여러 가지 방법을 제공하며, 가장 좋은 선택은 고정된 값 집합 또는 컬렉션 집합을 조인할지 또는 루프에서 문자열 조각을 하나씩 작성하는지에 따라 달라집니다.

문자열 리터럴 연결

문자열 리터럴 또는 상수를 +로 연결하면 컴파일러가 컴파일 시간에 이를 결합합니다. 긴 리터럴을 여러 줄로 분할하면 런타임 비용 없이 원본의 가독성이 향상됩니다.

// The compiler joins adjacent string literals at compile time,
// so splitting a long literal across lines has no run-time cost.
string message =
    "This is the first sentence of a longer message. " +
    "This is the second sentence. " +
    "This is the third and final sentence.";

Console.WriteLine(message);
// => This is the first sentence of a longer message. This is the second sentence. This is the third and final sentence.

++= 연산자 사용

문자열 변수를 결합하려면 연산자를 + 사용하여 새 문자열을 생성하거나 += 기존 문자열에 추가합니다. + 연산자는 직관적이며, 컴파일러는 여러 연산자를 단일 식에 연결하는 경우에도 문자열 콘텐츠를 한 번만 복사합니다.

string name = "Alex";
string day = "Monday";

// Use + to build a string from variables and literals.
string greeting = "Hello " + name + ". Today is " + day + ".";
Console.WriteLine(greeting);
// => Hello Alex. Today is Monday.

// Use += to append to an existing string.
greeting += " How are you today?";
Console.WriteLine(greeting);
// => Hello Alex. Today is Monday. How are you today?

메모

문자열 연결에서 C#은 문자열을 null 빈 문자열과 동일하게 처리하므로 연결 null 하면 결과에 아무 것도 추가하지 않습니다.

문자열 보간 사용

문자열에 계산된 식을 포함하려면, String.Format가 C 스타일 서식에서 물려받은 {0}{1} 토큰과 같은 위치 지정 자리 표시자보다 문자열 보간을 사용하는 것이 좋습니다. 보간은 각 식을 해당 값이 나타나는 인라인으로 배치하므로 결과 문자열은 계속 읽을 수 있으며 인수를 잘못 정렬할 수 없습니다.

string name = "Alex";
string day = "Monday";

// String interpolation reads better than a chain of + operators.
string greeting = $"Hello {name}. Today is {day}.";
Console.WriteLine(greeting);
// => Hello Alex. Today is Monday.

보간된 모든 식 자체가 상수 문자열인 경우 보간된 결과를 문자열에 const 할당할 수 있습니다.

문자열 컬렉션 조인

컬렉션의 요소를 결합하려면 구분 기호 없이 조인하거나 String.Concat 각 요소 사이에 구분 기호를 배치하는 데 사용합니다String.Join.

string[] words = ["The", "quick", "brown", "fox"];

// Concat joins the sequence with no separator.
string runTogether = string.Concat(words);
Console.WriteLine(runTogether);
// => Thequickbrownfox

// Join places a separator between each element.
string sentence = string.Join(' ', words);
Console.WriteLine(sentence);
// => The quick brown fox

string.Join 는 쉼표로 구분된 값이나 공백으로 구분된 단어와 같이 구분된 출력이 필요할 때마다 적합한 도구입니다.

루프에서 문자열 빌드

문자열은 변경할 수 있으므로 각 + 또는 += 연산은 새 문자열을 만듭니다. 루프에 많은 부분을 추가하면 해당 할당이 추가됩니다. 이 클래스는 StringBuilder 대신 단일 버퍼로 결과를 빌드합니다.

// StringBuilder builds a string in place, which suits loops
// that append many pieces.
var builder = new StringBuilder();
for (int i = 1; i <= 3; i++)
{
    builder.AppendLine($"Line {i}");
}

Console.Write(builder.ToString());
// => Line 1
// => Line 2
// => Line 3

컴파일 시점에 요소 수가 많거나 알 수 없는 경우에는 StringBuilder를 사용하세요. 고정된 작은 값 + 집합의 경우 연산자와 문자열 보간이 더 명확합니다. 각 방법이 가장 잘 수행되는 시기에 대한 지침 은 The stringStringBuilder types를 참조하세요.

참고하십시오