소소한 개발 공부

[C#] 문자열 처리 [자리표시자, 문자열 보간] 본문

프로그래밍/C#

[C#] 문자열 처리 [자리표시자, 문자열 보간]

이내내 2023. 2. 2. 23:07

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

문자열 서식에 대한 자세한 내용은 공식 문서에 자세히 나와있다.

https://learn.microsoft.com/ko-kr/dotnet/standard/base-types/composite-formatting#format-string-component

 

복합 형식 지정

입력으로 개체 목록을 사용하는 .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