String 클래스는 한번 메모리에 데이터를 할당하면 값을 변경할 수 없다.
만약, String 클래스에 문자열을 추가한다면 추가된 문자열을 다시 할당하는 방식으로 문자열을 관리한다. 따라서 문자열을 반복적으로 수정해야 하는 경우 String 개체를 사용하면 개체를 새로 만드는 작업으로 인한 오버헤드가 커질 수 있다.
개체를 새로 만들지 않고 문자열을 수정하려면 System.Text.StringBuilder 클래스를 사용하는 것이 좋다.
StringBuilder 개체를 사용하면 많은 문자열을 루프에 연결함으로써 성능을 높일 수 있다. StringBuilder는 캡슐화하는 문자열의 문자수를 확장할 수 있는 동적 개체지만, 필요하다면 개체가 가질 수 있는 문자의 최대수를 값으로 지정할 수도 있다.
이 값을 개체의 용량이라고 하며 용량은 현재 StringBuilder에 있는 문자열의 길이와는 다르다. 용량을 지정하면 StringBuilder의 데이터를 수정할 때 크기가 다시 할당되지 않는다. 하지만 용량에 도달하게 되면 새로운 공간이 자동으로 할당되게 되고 용량이 두 배로 늘어난다.
StringBuilder를 사용하기 위해서는 명시적으로 개체를 생성해야 한다.
Dim str As New System.Text.StringBuilder()
' 용량을 지정한 선언
Dim str1 As New System.Text.StringBuilder(15)
' Capacity 속성을 사용하여 용량을 지정
Dim str2 As New System.Text.StringBuilder()
str2.Capacity = 15
문자열 끝에 문자를 추가할 때는 Append 메서드를 사용한다.
Dim str As New System.Text.StringBuilder()
str.Append("Hellow world!")
이 때 추가되는 문자열에 포맷(숫자, 날짜/시간 및 열거형 등)을 지정하여 추가할 수 있는데 AppendFormat 메서드를 사용한다.
Dim str As New StringBuilder()
str.Append("Cost : ")
str.AppendFormat("{0:c}", 25)
' 출력되는 값은 Cost : \25
또한 Insert 메서드를 사용하면 문자열을 추가할 때 지정된 위치에 문자열을 추가할 수 있다.
Dim str As New StringBuilder()
str.Append("문자열 테스트 중")
str.Insert(3, " 개체")
' 출력값은 '문자열 개체 테스트 중'
모든 수정이 끝난 StringBuilder 개체를 문자열로 가져올 때는 ToString 메서드를 사용한다.
Dim str As New StringBuilder()
str.Append("문자열 테스트 중")
Console.WrtieLine(str.ToString())
'VB.NET 2008 > VB - 문자열' 카테고리의 다른 글
정규식을 활용한 문자열 유효성 검사 (0) | 2011.04.08 |
---|---|
문자열 - 형식 지정 중 숫자 형식 문자열 (0) | 2011.04.08 |
문자열 - Like 연산자를 사용하여 패턴에 대해 문자열 비교 (0) | 2011.04.08 |
문자열 - 문자열과 다른 데이터 형식 사이의 변환 (0) | 2011.04.08 |
문자열 - 문자열 데이터 형식과 문자열 처리 (0) | 2011.04.08 |