프로그래밍을 하면 가장 많이 다루게 되는 데이터는 숫자와 문자이다.
숫자의 경우, 실수와 정수에서 int 나 float 등의 다양한 형식이 존재하고
문자의 경우, char와 string 형식이 존재한다.
string 형식은 String 클래스 형식의 개체이다. 내부적으로 char 개체를 순차적으로 읽기 전용 컬렉션으로 저장한다. 또한, 문자열에 대한 탐색 및 수정을 위한 다양한 메소드들을 제공한다.
| 메소드 | 설명 |
|---|---|
| IndexOf() | 현재 문자열 내에서 찾으려고 하는 지정된 문자 또는 문자열의 위치를 찾는다 |
| LastIndexOf() | 현재 문자열 내에서 찾으려고 하는지정된 문자 또는 문자열의 위치를 뒤에서부터 찾는다 |
| StartsWith() | 현재 문자열이 지정된 문자열로 시작하는지를 평가한다 |
| EndsWith() | 현재 문자열이 지정된 문자열로 끝나는지를 평가한다 |
| Contains() | 현재 문자열이 지정된문자열을 포함하는지를 평가한다 |
| RePlace() | 현재 문자열에서 지정된 문자열이 다른지정된 문자열로 모두 바뀐 새 문자열로 반환한다 |
| ToLower() | 현재 문자열의 모든 대문자를 바꾼 새 문자열을 반환한다 |
| ToUpper() | 현재 문자열의 모든 소문자를 대문자로 바꾼 새 문자열을 반환한다 |
| Insert() | 현재 문자열의 지정된 위치로부터 지정된 수만큼의 문자가 삭제된 새 문자열을 반환한다 |
| Remove() | 현재 문자열의 지정된 위치로부터 지정된수만큼의 문자가 삭제된 새 문자열을 반환합니다. |
| Trim() | 현재 문자열의 앞/뒤에 있는 공백을 삭제한 새 문자열을 반환한다 |
| TrimStart() | 현재 문자열의 앞에 있는 공백을 삭제한 새 문자열을 반환한다 |
| TrimEnd() | 현재 문자열의 뒤에 있는 공백을 삭제한 새 문자열을 반환 한다 |
| Splite() | 지정된 문자를 기준으로 현재 문자열을 분리한 다음 분리한 문자열의 배열을 반환한다 |
| SubString() | 현재 문자열의 지정된 위치로부터 지정된 수 만큼의 문자로 이루어진 새 문자열을 반환한다 |
문자열을 사용하면 자연스럽게 일정 형태를 갖춘 서식을 지정해주기 마련이다. C#에서는 대표적으로 Format()메소드와 문자열 보간이다.
Format() 메소드의 경우, Console.Write() 나 Console.WriteLine()에서 내부적으로 사용하여 출력한다.
Console.Write("Total : {0, -7 :D}", 123);
// 첨자 : '0'
// 맞춤 : '-7'
// 서식 문자열 : ':D'
문자열 틀에 입력하는 {0}{1}...등을 서식항목(formatItem) 이라고 한다.
서식항목의 옵션은 다음과 같다.
| 첨자 | 맞춤 | 서식 문자열 |
|---|---|---|
| 서식항목의 첨자 | 왼쪽 / 오른쪽 맞춤 | 변환 서식 지정 문자열 |
https://learn.microsoft.com/ko-kr/dotnet/api/system.string.format?view=net-8.0
"비거나 누락된 부분을 채운다"
C# 6.0 새로 도입된 기능으로, 한결 더 편리하게 문자열의 양식을 맞출 수 있도록 프로그래머를 도와준다. Format() 메소드와 다른점은 문자열 틀 앞에 '$' 기호를 붙인다는 것과 서식에 첨자 대신 식이 들어간다. 이 식에서는 변수나 객체의 이름을 그대로 넣거나 상수, 조건에 따른 다른 값을 출력하는 코드가 들어갈 수도 있다.
int a = 10;
float b = 3.14;
Console.Write($"a = {a}, b = {b}");
a = 10, b= 3.14
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/tokens/interpolated
string 객체는 기본적으로 불변성을 가지고 있기 때문에 한번 선언되면 내부적으로 수정이나 변환을 하기위해서는 새로운 문자열 객체를 생성해서 할당하게 된다. 하지만 StringBuilder의 경우, 내부적으로 버퍼를 사용하여 기존의 문자열을 가공 및 변환 할 수 있도록 만들어져있다.
그래서 대량의 문자열을 사용하여 반복문자열 수정의 경우에 성능이 두드러지게 차이가 발생한다.
위 글은 이것이 C#이다 를 참고하여 작성