소소한 개발 공부
[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
문자열 서식에 대한 자세한 내용은 공식 문서에 자세히 나와있다.
참고로 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#] 명예의 전당 (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 |