소소한 개발 공부
[C#] 문자열 처리 [자리표시자, 문자열 보간] 본문
2023.02.05 추가 (3항 연산자의 경우 문자열 보간)
C# 에서 문자열을 처리하는 방법은 다양하다.
그 중 자리표시자, 문자열 보간에 대해 알아보도록 하자.
자리 표시자
문자열을 출력할 때 가장 쉬운 방법은 아래와 같다.
Console.WriteLine("hello");
출력 메서드 안에 string 문자열을 넣어주면 된다. 그런데 변수를 함께 출력하고 싶다면 어떻게 해야할까?
예를 들어, [나이]를 출력한다고 해보자.
int age = 10;
Console.WriteLine("my age is " + age);
// 출력: my age is 10
+ 연산자로 문자열을 연결할 수 있다.
다른 예시는 자리 표시자를 사용하는 것이다.
int age = 10;
Console.WriteLine("my age is {0}", age);
// 출력: my age is 10
자리 표시자는 위의 코드처럼 문자열 안에 {정수}를 넣어 정수에 해당하는 번지에 있는 변수를 대치시키는 방식이다.
예를 들어 {0}이라면 0 번째 변수를, {1}이라면 1번째 변수를 문자열 내 해당 위치에 대치한다.
자리표시자의 장점은 변수의 위치를 조정할 수 있다는 것이다.
int age = 10;
int tmp = 2;
Console.WriteLine("my age is {1}, {0}", age, tmp);
// 출력: my age is 2, 10
1번째 위치에 있는 tmp가 {1} 자리에 오고 0번째 위치에 있는 age가 {0} 자리에 옴으로써
my age is 2, 10 을 출력한다.
자리표시자는 매개변수가 늘어날수록 호출 문장도 길어진다는 단점이 있다.
C#6에서는 문자열 보간(interpolated string)이 등장한다.
문자열 보간
문자열 보간은 간단하다. "" 쌍따옴표 앞에 $ 문자만 붙여주고, 문자열 안에 변수를 나타낼 때 {} 중괄호를 씌워주기만 하면 된다.
int age = 10;
int tmp = 2;
Console.WriteLine($"my age is {age}, {tmp}");
Console.WriteLine 문장이 자리표시자에 비해 간결해지고 가독성이 좋아졌다.
이처럼 문자열 보간과 자리표시자를 이용해 동적인 값을 포함한 문자열을 처리할 수 있다.
또한 문자열의 포맷을 지정해주려면 : 로 뒤에 어떤 포맷인지 지정해주면 된다.
// $"{변수:서식}"
var date = new DateTime(2023, 2, 5);
Console.WriteLine($"Today is {date:dddd, MMMM dd, yyyy}");
// 출력: Today is 일요일, 2월 05, 2023
Console.WriteLine($"{3.141592:F1}");
// 출력: 3.1
문자열 서식에 대한 자세한 내용은 공식 문서에 자세히 나와있다.
복합 형식 지정
입력으로 개체 목록을 사용하는 .NET 복합 서식 지정과 인덱싱된 자리 표시자를 사용하는 고정 텍스트가 포함된 복합 서식 문자열에 대해 알아봅니다.
learn.microsoft.com
참고로 3항 연산자(?:)의 경우 보간 문자열에서 ":"를 쓰게 되면 서식 지정과 충돌이 나게 된다.
따라서 다음과 같이 괄호로 조건식을 나타내면 해결 가능하다.
Console.WriteLine($"{(3 < 4 ? 3 : 4)}"); // 출력: 3
Console.WriteLine($"{3 < 4 ? 3 : 4}"); // 에러
https://learn.microsoft.com/ko-kr/dotnet/csharp/tutorials/string-interpolation
C#의 문자열 보간
문자열 보간을 사용하여 C#으로 결과 문자열에 서식이 지정된 식 결과를 포함하는 방법을 알아봅니다.
learn.microsoft.com
'프로그래밍 > C#' 카테고리의 다른 글
[프로그래머스 | C#] 명예의 전당 (1) List.Sort, heap 삽입-제거 구현 (0) | 2023.02.04 |
---|---|
[C#] 물음표 ?? / ??= / ?. / ? (0) | 2023.02.02 |
[프로그래머스 | C#] 과일 장수 Sort (2) | 2023.02.01 |
[프로그래머스 | C#] 가장 가까운 같은 글자 LastIndexOf (0) | 2023.01.30 |
[프로그래머스 | C#] 크기가 작은 부분 문자열 TryParse (0) | 2023.01.29 |