[C#] 문자열, 문자 배열, StringBuilder

JAEGWANG KWAK·2023년 5월 14일
0

문자열

문자열(string)은 프로그램에서 가장 많이 쓰이는 데이타 타입 중의 하나이다. C#에서 문자열(string)은 이중부호를 사용하여 표현되며, 단일 문자(char)는 단일부호를 사용하여 표현된다.
C#의 키워드 string은 .NET의 System.String 클래스와 동일하며, 따라서 System.String 클래스의 모든 메서드와 속성(Property)을 사용할 수 있다. 예를 들어 일정 문자열 부분만 뽑아내는 Substring() 메서드, 문자열 길이를 구하는 Length 속성 등을 모두 사용할 수 있다.
C# 문자열은 Immutable 즉 한번 문자열이 설정되면, 다시 변경할 수 없다. (주: 한번 그 값이 설정되면 다시 변경할 수 없는 타입을 Immutable Type이라 부르고, 반대로 값을 계속 변경할 수 있는 것을 Mutable Type이라 부른다) 예를 들어, 문자열 변수 s 가 있을 때, s = "C#"; 이라고 한 후 다시 s = "F#"; 이라고 실행하면, .NET 시스템은 새로운 string 객체를 생성하여 "F#"이라는 데이타로 초기화 한 후 이를 변수명 s 에 할당한다. 즉, 변수 s 는 내부적으로는 전혀 다른 메모리를 갖는 객체를 가리키는 것이다.

문자 배열

문자열(string)은 문자(character)의 집합체이다. 문자열 안에 있는 각 문자를 엑세스하고 싶으면, [인덱스] (square bracket)을 사용하여 문자 요소를 엑세스한다.
예를 들어, 문자열 변수 s가 "Hello" 값을 가지고 있을 때, s[0]이라고 하면 첫번째 문자 H를, s[1]이라 하면 두번째 문자 e 를 리턴한다. 이는 문자열을 문자배열처럼 취급하는 것으로 일반 C# 배열과 마찬가지로 첫번째 요소는 [0]으로 엑세스한다.
문자배열(char array)을 문자열(string)으로 변환하기 위해서는 아래와 같이 new string(문자배열)을 사용한다.
하나의 문자는 상응하는 ASCII 코드 값을 가지는데, 예를 들어 대문자 A는 65, B는 66, Z는 90을 갖는다. 소문자는 a가 97, b가 98, ... 등을 갖는다. 하나의 문자는 이처럼 숫자값으로 표현되므로 문자에 숫자를 더하거나 빼면 다른 문자로 표현될 수 있다. 예를 들어 문자A 를 갖는 변수에 1을 더하면 66이 되어 문자 B가 된다.

StringBuilder

문자열을 다루는데 중요한 클래스 중의 하나는 System.Text.StringBuilder 클래스이다. String 클래스는 위에서 설명한 대로 Immutable이기 때문에, 문자열 갱신을 많이 하는 프로그램에는 적당하지 않다. 반면 Mutable 타입인 StringBuilder 클래스는 문자열 갱신이 많은 곳에서 자주 사용되는데 이는 이 클래스가 별도 메모리를 생성,소멸하지 않고 일정한 버퍼를 갖고 문자열 갱신을 효율적으로 처리하기 때문이다.
특히 루프 안에서 계속 문자열을 추가 변경하는 코드에서는 string 대신 StringBuilder를 사용해야 한다.

출처 : https://www.csharpstudy.com/CSharp/CSharp-string.aspx

profile
개인 공부 기록하는 공간 / 미흡한 부분은 지적해주시면 수정하겠습니다. 감사합니다.

0개의 댓글