C#에서 문자열을 연결(Concatenate)할 때는 String.Concat() 메서드를 사용합니다. 이 메서드는 두 개 이상의 문자열을 하나로 합쳐 새로운 문자열을 반환하며, 문자열 조작 작업에서 가장 기본적이면서도 자주 활용되는 기능입니다.
기본 문법
public static string Concat (string str1, string str2);
위 문법에서 매개변수 str1과 str2는 서로 연결할 문자열입니다. 두 문자열이 순서대로 이어져 하나의 새로운 문자열로 반환됩니다.
사용 예제 1: 두 문자열 연결하기
다음 예제는 두 개의 문자열을 선언한 후, 각 문자열의 정보를 출력하고 String.Concat()으로 연결하는 과정을 보여줍니다.
using System;
public class Demo {
public static void Main(String[] args) {
string str1 = "Jack";
string str2 = "Sparrow";
Console.WriteLine("String 1 = "+str1);
Console.WriteLine("HashCode of String 1 = "+str1.GetHashCode());
Console.WriteLine("Does String1 begins with E? = "+str1.StartsWith("E"));
Console.WriteLine("\nString 2 = "+str2);
Console.WriteLine("HashCode of String 2 = "+str2.GetHashCode());
Console.WriteLine("Does String2 begins with E? = "+str2.StartsWith("E"));
Console.WriteLine("\nString 1 is equal to String 2? = {0}", str1.Equals(str2));
Console.WriteLine("Concatenation Result = "+String.Concat(str1,str2));
}
}실행 결과
String 1 = Jack HashCode of String 1 = 1167841345 Does String1 begins with E? = False String 2 = Sparrow HashCode of String 2 = -359606417 Does String2 begins with E? = False String 1 is equal to String 2? = False Concatenation Result = JackSparrow
실행 결과를 보면 "Jack"과 "Sparrow"라는 두 문자열이 합쳐져 "JackSparrow"라는 하나의 문자열이 생성된 것을 확인할 수 있습니다. 참고로 해시 코드와 StartsWith(), Equals() 결과는 문자열 비교 관련 부가 정보입니다.
사용 예제 2: 문자열 배열 연결하기
String.Concat()은 단일 매개변수 형태로도 사용할 수 있습니다. 이번에는 문자열 배열 전체를 한 번에 연결하는 방법을 살펴보겠습니다.
문법
public static string Concat (params string[] arr);
위 문법에서 arr은 연결 대상인 문자열 배열입니다. params 키워드 덕분에 여러 문자열을 쉼표로 나열해 전달하는 것도 가능합니다.
예제 코드
using System;
public class Demo {
public static void Main(string[] args) {
string[] strArr = {"This", "is", "it", "!" };
Console.WriteLine("String Array...");
foreach(string s in strArr) {
Console.WriteLine(s);
}
Console.WriteLine("Concatenation = {0}",string.Concat(strArr));
string str = string.Join("/", strArr);
Console.WriteLine("Result (after joining) = " + str);
}
}실행 결과
String Array... This is it ! Concatenation = Thisisit! Result (after jointing) = This/is/it/!
Concat()과 Join()의 차이점
위 예제에서 주목할 점은 String.Join() 메서드와의 비교입니다. Concat()은 배열의 요소들을 구분자 없이 그대로 이어 붙이는 반면, Join()은 지정한 구분자(위 예제에서는 "/")를 요소 사이에 삽입하여 연결합니다. 따라서 단순 연결이 필요하면 Concat()을, 구분자가 필요한 경우에는 Join()을 사용하는 것이 좋습니다.
정리
- String.Concat(str1, str2): 두 문자열을 순서대로 연결합니다.
- String.Concat(params string[] arr): 문자열 배열 또는 가변 개수의 문자열을 한 번에 연결합니다.
- 구분자가 필요하다면 String.Join() 메서드를 활용하세요.
String.Concat()은 불변(Immutable)인 문자열을 새로 생성하여 반환하므로, 원본 문자열은 변경되지 않는다는 점도 기억해두면 좋습니다.