C#의 Substring() 메서드는 현재 문자열 인스턴스에서 특정 위치부터 시작하는 부분 문자열(substring)을 추출할 때 사용됩니다. 지정한 문자 위치부터 문자열 끝까지, 또는 지정한 길이만큼의 문자열을 반환합니다.
기본 문법
Substring() 메서드는 두 가지 오버로드 형태를 제공합니다.
public string Substring(int begnIndex); public string Substring(int begnIndex, int len);
매개변수 설명
- begnIndex: 부분 문자열을 추출할 시작 위치입니다. 인덱스는 0부터 시작합니다.
- len: 추출할 문자열의 길이(문자 수)입니다.
첫 번째 형태는 시작 인덱스만 받아 해당 위치부터 문자열 끝까지 전체를 반환하며, 두 번째 형태는 시작 위치와 길이를 모두 지정하여 원하는 만큼만 잘라냅니다.
예제 1 – 시작 인덱스만 지정하기
시작 위치만 지정하면 그 위치부터 문자열 끝까지 모두 추출됩니다.
using System;
public class Demo {
public static void Main(String[] args) {
string str1 = "Katherine";
string str2 = "PQRS";
Console.WriteLine("String1 = "+str1);
Console.WriteLine("String1 ToUpperInvariant = "+str1.ToUpperInvariant());
Console.WriteLine("String1 Substring from index4 = " + str1.Substring(4));
Console.WriteLine("\nString2 = "+str2);
Console.WriteLine("String2 ToLowerInvariant = "+str2.ToLowerInvariant());
Console.WriteLine("String2 Substring from index2 = " + str2.Substring(2));
}
}실행 결과
String1 = Katherine String1 ToUpperInvariant = KATHERINE String1 Substring from index4 = erine String2 = PQRS String2 ToLowerInvariant = pqrs String2 Substring from index2 = RS
위 예제에서 str1.Substring(4)는 "Katherine"의 인덱스 4(다섯 번째 문자 'e')부터 끝까지인 "erine"을 반환하고, str2.Substring(2)는 "PQRS"의 인덱스 2부터 끝까지인 "RS"를 반환합니다.
예제 2 – 시작 인덱스와 길이 함께 지정하기
시작 위치와 길이를 함께 지정하면 원하는 구간만 정확하게 추출할 수 있습니다.
using System;
public class Demo {
public static void Main(String[] args) {
string str1 = "Notebook";
string str2 = "Ultrabook";
Console.WriteLine("String1 = "+str1);
Console.WriteLine("String1 ToUpperInvariant = "+str1.ToUpperInvariant());
Console.WriteLine("String1 Substring(4, 4) = " + str1.Substring(4, 4));
Console.WriteLine("\nString2 = "+str2);
Console.WriteLine("String2 ToLowerInvariant = "+str2.ToLowerInvariant());
Console.WriteLine("String2 Substring(0, 5) = " + str2.Substring(0, 5));
}
}실행 결과
String1 = Notebook String1 ToUpperInvariant = NOTEBOOK String1 Substring(4, 4) = book String2 = Ultrabook String2 ToLowerInvariant = ultrabook String2 Substring(0, 5) = Ultra
str1.Substring(4, 4)는 "Notebook"의 인덱스 4부터 4글자인 "book"을, str2.Substring(0, 5)는 "Ultrabook"의 처음부터 5글자인 "Ultra"를 반환합니다.
사용 시 주의사항
Substring() 메서드를 사용할 때 다음 사항에 유의해야 합니다.
- 시작 인덱스가 문자열 길이보다 크거나 음수일 경우 ArgumentOutOfRangeException 예외가 발생합니다.
- 길이(len) 매개변수가 음수이거나, 시작 인덱스와 길이의 합이 문자열 길이를 초과하면 역시 예외가 발생합니다.
- 원본 문자열은 변경되지 않으며, 새로운 문자열이 반환됩니다. C#의 문자열(string)은 불변(immutable)이기 때문입니다.