C#/문자열

[C#]문자열에 특정 문자 채우는 방법

DevStory 2022. 8. 16.

문자열에 특정 문자 채우는 방법

C#의 문자열에서 자릿수만큼 특정 문자 또는 공백을 채워야 하는 경우가 있을 수 있습니다.

 

예를 들어, "Hello"라는 문자열을 10자리로 설정하고 왼쪽 남는 공간은 문자  '_'로 채운다면, 다음 문자열을 생성해야 합니다.

_____Hello

C#의 string 클래스는 특정 문자열의 자릿수를 설정하고 왼쪽 또는 오른쪽에 특정 문자를 할당하는 PadLeft(), PadRight() 메서드를 제공합니다.

 

이번 포스팅은 PadLeft(), PadRight() 메서드 사용 방법을 소개합니다.


방법 1. 왼쪽에 문자 채우기 - PadLeft 메서드

PadLeft() 메서드는 문자열의 자릿수를 설정하고 왼쪽 남는 공간을 공백 또는 특정 문자로 설정된 새로운 문자열을 반환합니다.

 

PadLeft() 메서드는 오버로드된 두 가지 버전이 존재합니다.

public string PadLeft (int totalWidth);
public string PadLeft (int totalWidth, char paddingChar);

첫 번째 매개변수는 문자열의 자릿수이며, 두 번째 매개변수는 특정 문자입니다.

 

두 번째 매개변수가 생략된 경우 왼쪽에 남는 공간을 공백으로 설정합니다.

※ PadLeft() 메서드와 PadRight() 메서드로 채워지는 공백은 16진수 0x0020입니다. 띄어쓰기와 동일합니다.

다음 예제는 문자열 "Hello"에서 자릿수를 10으로 설정하는 PadLeft() 메서드를 호출합니다.

class Program
{
  static void Main(string[] args)
  {
    string strValue = "Hello";
    string paddingResult = strValue.PadLeft(10);

    Console.WriteLine("strValue: " + strValue);
    Console.WriteLine("strValue의 길이: " + strValue.Length + "\n");

    Console.WriteLine("paddingResult: " + paddingResult);
    Console.WriteLine("paddingResult의 길이: " + paddingResult.Length);
  }
}

[실행 결과]

strValue: Hello
strValue의 길이: 5

paddingResult:      Hello
paddingResult의 길이: 10

예제 1. 특정 문자로 채우는 방법

왼쪽 남는 공간을 특정 문자로 채우고 싶은 경우 PadLeft() 메서드의 두 번째 매개변수에 특정 문자를 전달합니다.

 

다음 예제는 문자열 "Hello"에서 자릿수를 10으로 설정하고 왼쪽 남는 공간을 문자 '_'로 설정하는 PadLeft() 메서드를 호출합니다.

class Program
{
  static void Main(string[] args)
  {
    string strValue = "Hello";
    string paddingResult = strValue.PadLeft(10, '_');

    Console.WriteLine("strValue: " + strValue);
    Console.WriteLine("strValue의 길이: " + strValue.Length + "\n");

    Console.WriteLine("paddingResult: " + paddingResult);
    Console.WriteLine("paddingResult의 길이: " + paddingResult.Length);
  }
}

[실행 결과]

strValue: Hello
strValue의 길이: 5

paddingResult: _____Hello
paddingResult의 길이: 10

주의사항. PadLeft 메서드의 두 번째 매개변수

PadLeft() 메서드의 두 번째 매개변수는 char 타입의 값입니다.

 

따라서, 다음 소스 코드처럼 큰 따옴표(")로 문자를 감싸는 경우 컴파일 에러가 발생합니다. 

string paddingResult = strValue.PadLeft(10, "_");

[에러 내용]


예제 2. 자릿수가 문자열 길이보다 작은 경우

PadLeft() 메서드의 첫 번째 매개변수로 전달된 자릿수가 문자열의 길이보다 작은 경우 기존 문자열과 동일한 문자열을 반환합니다.

class Program
{
  static void Main(string[] args)
  {
    string strValue = "Hello";
    string paddingResult = strValue.PadLeft(3, '_');

    Console.WriteLine("strValue: " + strValue);
    Console.WriteLine("strValue의 길이: " + strValue.Length + "\n");

    Console.WriteLine("paddingResult: " + paddingResult);
    Console.WriteLine("paddingResult의 길이: " + paddingResult.Length);
  }
}

[실행 결과]

strValue: Hello
strValue의 길이: 5

paddingResult: Hello
paddingResult의 길이: 5

방법 2. 오른쪽에 문자 채우기 - PadRight 메서드

PadRight() 메서드는 문자열의 자릿수를 설정하고 오른쪽 남는 공간을 공백 또는 특정 문자로 설정된 새로운 문자열을 반환합니다.

 

PadRight() 메서드는 PadLeft() 메서드와 마찬가지로 오버로드된 두 가지 버전이 존재합니다.

public string PadRight (int totalWidth);
public string PadRight (int totalWidth, char paddingChar);

메서드 사용 방법과 주의사항은 PadLeft() 메서드와 동일하며, 공백 또는 특정 문자가 오른쪽에 채워진다는 차이점만 있습니다.

 

다음 예제는 문자열 "Hello"에서 자릿수를 10으로 설정하고 오른쪽 남는 공간을 문자 "_"로 설정하는 PadRight() 메서드를 호출합니다.

class Program
{
  static void Main(string[] args)
  {
    string strValue = "Hello";
    string paddingResult = strValue.PadRight(10, '_');

    Console.WriteLine("strValue: " + strValue);
    Console.WriteLine("strValue의 길이: " + strValue.Length + "\n");

    Console.WriteLine("paddingResult: " + paddingResult);
    Console.WriteLine("paddingResult의 길이: " + paddingResult.Length);
  }
}

[실행 결과]

strValue: Hello
strValue의 길이: 5

paddingResult: Hello_____
paddingResult의 길이: 10
반응형

댓글