연습 - 안쪽 여백 및 맞춤 검색
- 12분
string.Format()
메서드는 예제와 같은 복합 서식 지정을 수행하는 데 사용됩니다.
string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);
데이터 형식을 나타내는 키워드에 Console
클래스에서 메서드를 호출하는 것과 동일한 방식으로 호출할 수 있는 메서드가 포함되어 있는 것이 약간 이상한 것처럼 보였을 것입니다. 사실, string
데이터 형식과 리터럴 문자열 또는 문자열 형식의 변수에는 여러 개의 유사한 메서드가 있습니다.
다음은 가능한 상황에 대한 이해를 돕기 위해 제공되는 이러한 기본 제공 메서드의 간단한 범주 목록입니다.
- 서식 지정을 위해 공백을 추가하는 메서드(
PadLeft()
,PadRight()
) - 두 문자열을 비교하거나 비교를 용이하게 하는 메서드(
Trim()
,TrimStart()
,TrimEnd()
,GetHashcode()
,Length
속성) - 문자열의 내에 있는 항목을 확인하거나 문자열의 일부만 검색하는 데 도움이 되는 메서드(
Contains()
,StartsWith()
,EndsWith()
,Substring()
) - 부분을 교체, 삽입 또는 제거하여 문자열의 내용을 변경하는 메서드(
Replace()
,Insert()
,Remove()
) - 문자열을 문자열 배열 또는 문자 배열로 변환하는 메서드(
Split()
,ToCharArray()
)
앞 또는 뒤에 공백을 추가하여 문자열 서식 지정
PadLeft()
메서드는 총 문자 수가 사용자가 보낸 인수와 같도록 문자열의 왼쪽에 공백을 추가합니다. 이 경우에는 문자열의 전체 길이를 12자로 만들려고 합니다.
//
줄 주석 연산자를 삭제하거나 사용하여 이전 연습의 모든 코드를 주석 처리합니다.다음과 같이 Visual Studio Code 편집기에서 코드를 업데이트합니다.
string input = "Pad this"; Console.WriteLine(input.PadLeft(12));
Visual Studio Code 파일 메뉴에서 저장을 선택합니다. 코드를 빌드하거나 실행하기 전에 Program.cs 파일을 저장합니다.
탐색기 패널에서 TestProject 폴더 위치에서 터미널을 열려면 TestProject를 마우스 오른쪽 단추로 클릭한 다음 통합 터미널에서 열기를 선택합니다. 터미널 패널이 열려 있어야 하고 터미널이 TestProject 폴더 위치에 열려 있음을 보여 주는 명령 프롬프트를 포함해야 합니다.
터미널 명령 프롬프트에서 코드를 실행하려면 dotnet run을 입력한 다음, Enter 키를 누릅니다.
참고
“실행할 프로젝트를 찾을 수 없습니다.”라는 메시지가 표시되면 터미널 명령 프롬프트에 예상되는 TestProject 폴더 위치가 표시되는지 확인합니다. 예:
C:\Users\someuser\Desktop\csharpprojects\TestProject>
코드를 실행하면 문자열의 왼쪽에 접두사가 붙은 4개의 문자가 길이를 12자로 늘리는 것을 볼 수 있습니다.
Pad this
문자열의 오른쪽에 공백이나 문자를 추가하려면
PadRight()
메서드를 대신 사용합니다. 1. 다음과 같이 Visual Studio Code 편집기에서 코드를 업데이트합니다.Console.WriteLine(input.PadRight(12));
코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다. 문자열의 끝에 추가된 문자가 보이지는 않지만 문자열 끝에 추가되어 있다는 것을 알 수는 있습니다.
오버로드된 메서드란 무엇인가요?
C#에서 오버로드된 메서드는 오버로드된 버전의 PadLeft()
메서드를 사용하는 경우와 마찬가지로 메서드의 기능을 약간 수정하는 다른 인수 또는 추가 인수를 사용하는 메서드의 또 다른 버전입니다.
이 메서드의 두 번째 오버로드된 버전을 호출한 후 공백 대신 사용할 문자를 제공할 수도 있습니다. 이 경우 대시 문자를 사용하여 추가 공간을 채웁니다.
//
줄 주석 연산자를 삭제하거나 사용하여 이전 단계의 모든 코드를 주석 처리합니다.다음과 같이 Visual Studio Code 편집기에서 코드를 업데이트합니다.
Console.WriteLine(input.PadLeft(12, '-')); Console.WriteLine(input.PadRight(12, '-'));
코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다. 문자 길이가 12자가 되도록 문자열 왼쪽에 4개의 대시가 표시되어야 합니다.
----Pad this Pad this----
이제 새롭게 알게 된 이 정보를 다른 실제 시나리오에 적용합니다.
안쪽 여백이 채워진 문자열 작업
아직도 레거시 메인프레임 시스템을 지원하는 지불 처리 회사에서 일한다고 가정해 보겠습니다. 이러한 시스템에서는 데이터를 특정 열에 입력해야 하는 경우가 많습니다. 예를 들어, 지불 ID는 1~6열에, 수취인의 이름은 7~30열에, 지불 금액은 31~ 40열에 저장합니다. 또한 특히 지불 금액은 오른쪽에 맞춰야 합니다.
관계형 데이터베이스 관리 시스템의 데이터를 레거시 파일 형식으로 변환하는 애플리케이션을 빌드하라는 요청을 받았습니다. 제대로 통합되려면 첫 번째 단계는 레거시 시스템 유지 관리자에게 출력 샘플을 제공하여 파일 형식을 확인하는 것입니다. 나중에 이 작업을 토대로, ASCII 텍스트 파일을 통해 처리될 수백 또는 수천 개의 지불을 보냅니다.
출력에 결제 ID 추가
먼저 처음 6개 열에 지불 ID를 출력합니다. 현재의 작업 목적에 적절한 지불 데이터를 임의로 몇 개 선택합니다.
//
줄 주석 연산자를 삭제하거나 사용하여 이전 단계의 모든 코드를 주석 처리합니다.다음과 같이 Visual Studio Code 편집기에서 코드를 업데이트합니다.
string paymentId = "769C"; var formattedLine = paymentId.PadRight(6); Console.WriteLine(formattedLine);
formattedLine
변수를 다시 사용하여 출력 문자열을 작성합니다.코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다. 다음과 같은 출력이 표시됩니다.
769C
오른쪽에는 표시되지 않는 공백 두 개가 있습니다. 다음 단계에서는 이러한 공백이 존재하는지 확인합니다.
출력에 수취인 이름 추가
다음에는 가상의 수취인 이름을 추가하고 적절하게 안쪽 여백을 지정합니다.
다음과 같이 Visual Studio Code 편집기에서 코드를 업데이트합니다.
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); Console.WriteLine(formattedLine);
+=
연산자는formattedLine
변수의 이전 값을 가져온 후 새 값을 추가하는 방식으로 문자열 연결을 수행합니다. 다음 코드 예제와 같은 단축된 값입니다.formattedLine = formattedLine + payeeName.PadRight(24);
코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다. 다음과 같은 출력이 표시됩니다.
769C Mr. Stephen Ortega
마찬가지로 수취인 이름 뒤에 공백 몇 개가 있습니다. 또한 1단계의 지불 ID 뒤에는 2개의 공백이 있습니다.
출력에 지불 금액 추가
다음으로, 가상의 지불 금액을 추가하고 PadLeft()
를 사용하여 출력을 오른쪽에 정렬합니다.
다음과 같이 Visual Studio Code 편집기에서 코드를 업데이트합니다.
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; string paymentAmount = "$5,000.00"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); formattedLine += paymentAmount.PadLeft(10); Console.WriteLine(formattedLine);
코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다. 다음과 같은 출력이 표시됩니다.
769C Mr. Stephen Ortega $5,000.00
이 출력은 우리가 이해한 것처럼 레거시 시스템 유지 관리자가 원하는 결과와 매우 가깝습니다.
결과를 보다 쉽게 확인할 수 있게 출력 위에 숫자 줄 추가
각 데이터 요소가 표시되는 정확한 열을 계산하는 것은 어렵기 때문에 열을 계산하는 데 도움이 되는 줄을 출력 바로 위에 추가해 보겠습니다.
Console.WriteLine("1234567890123456789012345678901234567890");
다음과 같이 Visual Studio Code 편집기에서 코드를 업데이트합니다.
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; string paymentAmount = "$5,000.00"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); formattedLine += paymentAmount.PadLeft(10); Console.WriteLine("1234567890123456789012345678901234567890"); Console.WriteLine(formattedLine);
코드 파일을 저장한 다음 Visual Studio Code를 사용하여 코드를 실행합니다. 새로운 통합이 올바르게 작동할 것임을 확인할 수 있게 레거시 시스템의 유지 관리자에게 보낼 수 있는 다음 출력이 표시되어야 합니다.
1234567890123456789012345678901234567890 769C Mr. Stephen Ortega $5,000.00
성공했습니다.
요약
이 단원에서 얻은 몇 가지 중요한 내용은 다음과 같습니다.
string
데이터 형식, 리터럴 문자열 및 문자열 형식의 변수는 각각 문자열의 서식을 지정하고, 문자열을 수정하고, 문자열에 대해 다른 작업을 수행하기 위한 많은 도우미 메서드를 구현합니다.PadLeft()
및PadRight()
메서드는 문자열의 전체 길이에 공백(또는 선택적으로 다른 문자)을 추가합니다.PadLeft()
를 사용하여 문자열을 오른쪽에 맞춥니다.- 일부 메서드는 오버로드됩니다. 즉, 해당 기능에 영향을 주는 다른 인수를 사용하는 여러 버전의 메서드가 생성됩니다.
+=
연산자는 오른쪽의 새 문자열을 왼쪽의 기존 문자열에 연결합니다.