VB.NET 2008/VB - 문자열

문자열 - System.Text.StringBuilder 클래스

본클라쓰 2011. 4. 8. 09:28

 

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())