C#으로 Substring 메서드를 직접 구현하는 방법
문자열 처리는 프로그래밍에서 가장 기본적이면서도 중요한 부분 중 하나입니다. 특히 문자열의 일부를 추출하는 'Substring' 기능은 다양한 어플리케이션에서 광범위하게 사용됩니다. 이 글에서는 C#에서 Substring 메서드의 사용법을 살펴보고, 학습 목적으로 직접 구현하는 방법을 살펴보겠습니다.
Substring이란?
Substring은 문자열 내의 일부분, 즉 부분 문자열을 나타내는 용어입니다. 프로그래밍에서 이 개념은 매우 중요하며, 다양한 언어와 환경에서 널리 사용됩니다. Substring을 사용하여 문자열의 특정 부분을 추출하거나 처리할 수 있습니다. 예를 들어, "Hello World"라는 문자열에서 "World"라는 부분만 추출하고 싶을 때, Substring을 사용할 수 있습니다. C#에서는 String 클래스의 내장 메서드로 Substring을 제공하고 있습니다.
C#의 내장 Substring 메서드 사용하기
C#에서는 아래와 같이 Substring 메서드를 사용할 수 있습니다.
string example = "Hello World";
string sub1 = example.Substring(6); // "World"
string sub2 = example.Substring(0, 5); // "Hello"
Substring 메서드는 두 가지 오버로드를 제공합니다:
- Substring(int startIndex): startIndex부터 문자열의 끝까지 추출합니다.
- Substring(int startIndex, int length): startIndex부터 지정된 길이만큼의 문자열을 추출합니다.
Substring의 주요 개념
- 인덱스: C#에서 문자열의 인덱스는 0부터 시작합니다. Substring 메서드에서 사용되는 시작 인덱스도 0부터 시작하는 것을 의미합니다.
- 길이 매개변수: 두 번째 오버로드에서 사용되는 길이 매개변수는 추출하고자 하는 문자열의 길이를 지정합니다. 예를 들어, Substring(2, 5)는 시작 인덱스 2에서 시작하여 5개의 문자를 추출합니다.
- 불변성: 대부분의 경우, 원본 문자열은 변경되지 않고 새로운 Substring이 생성됩니다.
- 예외 처리: 유효하지 않은 인덱스나 길이를 지정할 경우 System.ArgumentOutOfRangeException 예외가 발생합니다. 예를 들어, 문자열 길이를 초과하는 인덱스나 음수 인덱스를 사용할 경우 예외가 발생합니다.
학습 목적으로 Substring 직접 구현하기
이제 C#에서 Substring 메서드를 직접 구현해보겠습니다. 이를 통해 문자열 처리와 C#의 기본 메커니즘에 대한 이해를 높일 수 있습니다.
public static string MySubstring(string source, int startIndex, int length)
{
if (source == null) throw new ArgumentNullException(nameof(source));
if (startIndex < 0 || startIndex > source.Length) throw new ArgumentOutOfRangeException(nameof(startIndex));
if (length < 0 || startIndex + length > source.Length) throw new ArgumentOutOfRangeException(nameof(length));
char[] subString = new char[length];
for (int i = 0; i < length; i++)
{
subString[i] = source[startIndex + i];
}
return new string(subString);
}
이 코드에서는 다음과 같은 점들을 고려했습니다:
- 입력 문자열이 null인 경우 ArgumentNullException을 발생시킵니다.
- 시작 인덱스가 문자열의 범위를 벗어나는 경우 ArgumentOutOfRangeException을 발생시킵니다.
- 요청된 길이가 유효하지 않거나 문자열의 범위를 벗어나는 경우 ArgumentOutOfRangeException을 발생시킵니다.
- 요청된 부분 문자열을 새 문자열로 반환합니다.
C#에서 Substring을 사용하는 것은 매우 간단하지만, 이를 직접 구현해보는 것은 프로그래밍 능력을 향상시키는 좋은 방법입니다. 이 과정을 통해 문자열 처리의 기본 원리와 C#의 작동 방식에 대해 더 깊이 이해할 수 있습니다. 이 글이 C#의 문자열 처리에 대한 이해를 돕는 데 도움이 되기를 바랍니다.