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

C#에서 문자열을 N번 반복하는 3가지 방법

C#으로 개발하다 보면 특정 문자나 문자열을 지정한 횟수만큼 반복해야 하는 경우가 자주 있습니다. 예를 들어 구분선을 만들거나, 문자열 패딩을 처리하거나, 테스트 데이터를 생성할 때 유용하게 활용됩니다. 이 글에서는 가장 널리 사용되는 세 가지 방법을 코드 예제와 함께 정리했습니다.

  • string 생성자new string(charToRepeat, 5) : 단일 문자를 반복할 때 가장 간단하고 빠릅니다.
  • string.Concat + Enumerable.Repeatstring.Concat(Enumerable.Repeat(charToRepeat, 5)) : LINQ 스타일로 반복 시퀀스를 생성합니다.
  • StringBuilder – 반복문과 함께 사용 : 반복 횟수가 크거나 로직이 복잡할 때 성능상 유리합니다.

1. string 생성자 사용하기

string 생성자는 문자(char)와 반복 횟수를 인자로 받아, 해당 문자를 지정한 횟수만큼 반복한 새 문자열을 반환합니다.

예제

using System;

namespace DemoApplication {
    public class Program {
        static void Main(string[] args) {
            string myString = "Hi";
            Console.WriteLine($"String: {myString}");
            char charToRepeat = '!';
            Console.WriteLine($"Character to repeat: {charToRepeat}");
            string repeatedString = new string(charToRepeat, 5);
            Console.WriteLine($"Repeated String: {myString}{repeatedString}");
            Console.ReadLine();
        }
    }
}

출력 결과

String: Hi
Character to repeat: !
Repeated String: Hi!!!!!

위 예제에서는 new string(charToRepeat, 5)를 사용하여 문자 '!'를 5번 반복했습니다. 단일 문자를 반복할 때는 별도의 네임스페이스 참조 없이 가장 직관적이고 효율적으로 처리할 수 있습니다.

2. string.Concat과 Enumerable.Repeat 사용하기

System.Linq 네임스페이스의 Enumerable.Repeat 메서드는 지정한 값을 원하는 횟수만큼 반복하는 시퀀스를 생성합니다. 이를 string.Concat과 함께 사용하면 문자 시퀀스를 하나의 문자열로 합칠 수 있습니다.

예제

using System;
using System.Linq;

namespace DemoApplication {
    public class Program {
        static void Main(string[] args) {
            string myString = "Hi";
            Console.WriteLine($"String: {myString}");
            char charToRepeat = '!';
            Console.WriteLine($"Character to repeat: {charToRepeat}");
            var repeatedString = string.Concat(Enumerable.Repeat(charToRepeat, 5));
            Console.WriteLine($"Repeated String: {myString}{repeatedString}");
            Console.ReadLine();
        }
    }
}

출력 결과

String: Hi
Character to repeat: !
Repeated String: Hi!!!!!

위 예제에서는 string.Concat(Enumerable.Repeat(charToRepeat, 5))를 사용하여 문자 '!'를 5번 반복했습니다. LINQ에 익숙한 개발자라면 선언형 스타일로 작성할 수 있어 코드 가독성이 좋다는 장점이 있습니다.

3. StringBuilder 사용하기

StringBuilder를 사용하면 반복할 문자열의 길이를 미리 계산해 초기 용량을 설정한 뒤, 반복문으로 문자열을 추가하는 방식으로 처리할 수 있습니다. 불필요한 문자열 재할당을 줄여주기 때문에 반복 횟수가 많을 때 특히 유리합니다.

예제

using System;
using System.Text;

namespace DemoApplication {
    public class Program {
        static void Main(string[] args) {
            string myString = "Hi";
            Console.WriteLine($"String: {myString}");
            string stringToRepeat = "!";
            Console.WriteLine($"String to repeat: {stringToRepeat}");
            StringBuilder builder = new StringBuilder(stringToRepeat.Length * 5);
            for (int i = 0; i < 5; i++) {
                builder.Append(stringToRepeat);
            }
            string repeatedString = builder.ToString();
            Console.WriteLine($"Repeated String: {myString}{repeatedString}");
            Console.ReadLine();
        }
    }
}

출력 결과

String: Hi
Character to repeat: !
Repeated String: Hi!!!!!

위 예제에서는 먼저 반복할 문자열의 길이를 구한 후, for 반복문 안에서 Append 메서드로 문자열 "!"를 5번 추가했습니다. 마지막에는 ToString()을 호출하여 최종 문자열을 얻습니다.

어떤 방법을 선택해야 할까?

  • 단일 문자 반복 : new string(char, count)가 가장 간결하고 성능도 우수합니다.
  • 문자열 반복 또는 LINQ 선호 : string.Concat(Enumerable.Repeat(...)) 조합이 읽기 쉽고 유연합니다.
  • 대용량·동적 반복 : StringBuilder가 메모리 할당 측면에서 가장 효율적입니다.

상황에 맞는 방법을 선택하면 코드의 가독성과 성능을 모두 챙길 수 있습니다.