Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 문자열의 모든 부분 문자열(Substring)을 찾는 방법

C#에서 문자열의 모든 부분 문자열 찾기

C#에서는 Substring() 메서드를 활용하면 하나의 문자열에서 만들 수 있는 모든 부분 문자열(substring)을 손쉽게 추출할 수 있습니다. 핵심 아이디어는 추출할 문자열의 길이시작 위치를 반복문으로 조절해 가며 Substring 메서드를 계속 호출하는 것입니다.

예를 들어 다음과 같은 문자열이 있다고 가정해 보겠습니다.

Xyz

길이가 i인 부분 문자열을 모두 얻으려면, 시작 인덱스를 0부터 문자열 길이에서 i를 뺀 값까지 순회하면 됩니다.

for (int start = 0; start <= str.Length - i; start++) {
    string substr = str.Substring(start, i);
    Console.WriteLine(substr);
}

여기에 길이 i를 1부터 문자열 길이까지 변화시키는 외부 반복문을 감싸면, 해당 문자열에서 만들어질 수 있는 모든 부분 문자열을 순서대로 출력할 수 있습니다.

전체 예제 코드

다음은 C#으로 문자열의 모든 부분 문자열을 찾아 콘솔에 출력하는 전체 프로그램입니다.

using System;
class Demo {
    static void Main() {
        string str = "xyz";
        for (int i = 1; i < str.Length; i++) {
            for (int start = 0; start <= str.Length - i; start++) {
                string substr = str.Substring(start, i);
                Console.WriteLine(substr);
            }
        }
    }
}

실행 결과

x
y
z
xy
yz

동작 원리 정리

  • 외부 반복문(i): 추출할 부분 문자열의 길이를 결정합니다. 위 예제에서는 1부터 문자열 길이 미만까지 증가합니다.
  • 내부 반복문(start): 각 길이에 대해 시작 위치를 한 칸씩 이동시키며 해당 길이의 모든 부분 문자열을 추출합니다.
  • Substring(start, i): start 인덱스부터 길이 i만큼의 문자열을 잘라 반환합니다.

참고로 위 코드는 조건이 i < str.Length이므로 문자열 전체("xyz") 자체는 결과에 포함되지 않습니다. 완전한 문자열까지 모든 부분 문자열에 포함하고 싶다면 조건을 i <= str.Length로 변경하면 됩니다.