VB.Net/Language Basics/StringBuilder
Содержание
- 1 Append String to StringBuilder
- 2 Demonstrating StringBuilder class constructors
- 3 Insert and Remove of the StringBuilder class
- 4 StringBuilder Append methods
- 5 StringBuilder: Char and Replace
- 6 StringBuilder Length and Capacity
- 7 StringBuilder method AppendFormat
- 8 StringBuilder Performance Test
- 9 StringBuilder Replace method
- 10 Use StringBuilder for fast processing strings
- 11 Use StringBuilder Indexer
Append String to StringBuilder
<source lang="vbnet"> Imports System Imports System.Text Public Class MainClass
Shared Sub Main(ByVal args As String()) Dim s1 As String = "One,Two,Three" Const Space As Char = " "c Const Comma As Char = ","c Dim delimiters( ) As Char = {Space, Comma} Dim output As New StringBuilder( ) Dim ctr As Integer = 0 Dim resultArray As String( ) = s1.Split(delimiters) Dim subString As String For Each subString In resultArray ctr = ctr + 1 output.AppendFormat("{0} : {1}" & _ Environment.NewLine, ctr, subString) Next subString Console.WriteLine(output) End Sub
End Class
</source>
Demonstrating StringBuilder class constructors
<source lang="vbnet"> Imports System Imports System.Text Public Class MainClass
Shared Sub Main()
Dim buffer1, buffer2, buffer3 As StringBuilder Dim quotes As Char = ChrW(34) buffer1 = New StringBuilder() buffer2 = New StringBuilder(10) buffer3 = New StringBuilder("hello") Console.WriteLine("buffer1 = " & quotes & buffer1.ToString() & _ quotes) Console.WriteLine("buffer2 = " & quotes & _ buffer2.ToString() & quotes) Console.WriteLine("buffer3 = " & quotes & _ buffer3.ToString() & quotes) End Sub " Main
End Class
</source>
Insert and Remove of the StringBuilder class
<source lang="vbnet"> Imports System Imports System.Text Public Class MainClass
Shared Sub Main() Dim objectValue As Object = "hello" Dim stringValue As String = "good bye" Dim characterArray As Char() = {"a"c, "b"c, "c"c, _ "d"c, "e"c, "f"c} Dim booleanValue As Boolean = True Dim characterValue As Char = "K"c Dim integerValue As Integer = 7 Dim longValue As Long = 1123456 Dim singleValue As Single = 2234.4325 Dim doubleValue As Double = 33.3 Dim buffer As StringBuilder = New StringBuilder() " insert values into buffer buffer.Insert(0, objectValue) buffer.Insert(0, " ") buffer.Insert(0, stringValue) buffer.Insert(0, " ") buffer.Insert(0, characterArray) buffer.Insert(0, " ") buffer.Insert(0, booleanValue) buffer.Insert(0, " ") buffer.Insert(0, characterValue) buffer.Insert(0, " ") buffer.Insert(0, integerValue) buffer.Insert(0, " ") buffer.Insert(0, longValue) buffer.Insert(0, " ") buffer.Insert(0, singleValue) buffer.Insert(0, " ") buffer.Insert(0, doubleValue) buffer.Insert(0, " ") Console.WriteLine("buffer after inserts:" & vbCrLf & _ buffer.ToString() ) buffer.Remove(12, 1) buffer.Remove(2, 4) Console.WriteLine("buffer after Removes:" & vbCrLf & _ buffer.ToString()) End Sub " Main
End Class
</source>
StringBuilder Append methods
<source lang="vbnet"> Imports System Imports System.Text Public Class MainClass
Shared Sub Main() Dim objectValue As Object = "hello" Dim stringValue As String = "good bye" Dim characterArray As Char() = {"a"c, "b"c, "c"c, _ "d"c, "e"c, "f"c} Dim booleanValue As Boolean = True Dim characterValue As Char = "Z"c Dim integerValue As Integer = 2347 Dim longValue As Long = 100 Dim singleValue As Single = 2.52 Dim doubleValue As Double = 3.3 Dim buffer As StringBuilder = New StringBuilder() " use method Append to append values to buffer buffer.Append(objectValue) buffer.Append(" ") buffer.Append(stringValue) buffer.Append(" ") buffer.Append(characterArray) buffer.Append(" ") buffer.Append(characterArray, 0, 3) buffer.Append(" ") buffer.Append(booleanValue) buffer.Append(" ") buffer.Append(characterValue) buffer.Append(" ") buffer.Append(integerValue) buffer.Append(" ") buffer.Append(longValue) buffer.Append(" ") buffer.Append(singleValue) buffer.Append(" ") buffer.Append(doubleValue) Console.WriteLine("buffer = " & buffer.ToString()) End Sub " Main
End Class
</source>
StringBuilder: Char and Replace
<source lang="vbnet"> Imports System.Text
Module Module1
Sub Main() Dim SB As StringBuilder = New StringBuilder(26) SB.Append("ABCDEFGHIJKLMNOPQRSTUVWYZ") SB.Chars(4) = "e" SB.Chars(0) = "a" SB.Replace("aBCDe", "ABCDE")
Console.WriteLine("Ending StringBuilder: " & SB.ToString()) End Sub
End Module
</source>
StringBuilder Length and Capacity
<source lang="vbnet"> Imports System Imports System.Text Public Class MainClass
Shared Sub Main() Dim buffer As StringBuilder = _ New StringBuilder("Hello, how are you?") Dim output As String = "buffer = " & buffer.ToString & _ vbCrLf & "Length = " & buffer.Length & vbCrLf & _ "Capacity = " & buffer.Capacity buffer.EnsureCapacity(75) Console.WriteLine("New capacity = " & _ buffer.Capacity) buffer.Length = 10 Console.WriteLine("New Length = " & _ buffer.Length & vbCrLf & "buffer = ") End Sub " Main
End Class
</source>
StringBuilder method AppendFormat
<source lang="vbnet"> Imports System Imports System.Text Public Class MainClass
Shared Sub Main() Dim buffer As StringBuilder = New StringBuilder() Dim string1, string2 As String string1 = "This {0} costs: {1:C}." & vbCrLf Dim objectArray As Object() = New Object(1) {} objectArray(0) = "car" objectArray(1) = 1234.56 buffer.AppendFormat(string1, objectArray) string2 = "Number:{0:D3}. " & vbCrLf & _ "Number right aligned with spaces:{0, 4}." & vbCrLf & _ "Number left aligned with spaces:{0, -4}." buffer.AppendFormat(string2, 5) Console.WriteLine(buffer.ToString()) End Sub
End Class
</source>
StringBuilder Performance Test
<source lang="vbnet"> Imports System Public Class MainClass
Shared Sub Main() Dim i As Integer Dim StartTime As New DateTime() Dim EndTime As New DateTime() StartTime = DateTime.Now() Dim theText As New System.Text.StringBuilder() For i = 1 To 50000 theText = theText.Append("A") Next EndTime = DateTime.Now Dim answer1, answer2 As Long answer1 = EndTime.Ticks() - StartTime.Ticks() StartTime = DateTime.Now() Dim aString As String = "" For i = 1 To 50000 aString = aString & "A" Next EndTime = DateTime.Now answer2 = (EndTime.Ticks() - StartTime.Ticks()) Console.WriteLine("StringBuilder was " & answer2 / answer1 & " times faster.") End Sub
End Class
</source>
StringBuilder Replace method
<source lang="vbnet"> Imports System Imports System.Text Public Class MainClass
Shared Sub Main() Dim builder1 As StringBuilder = _ New StringBuilder("Happy Birthday Jane") Dim builder2 As StringBuilder = _ New StringBuilder("good bye greg") Console.WriteLine("Before Replacements:" & vbCrLf & _ builder1.ToString() & vbCrLf & builder2.ToString()) builder1.Replace("Jane", "Greg") builder2.Replace("g"c, "G"c, 0, 5) Console.WriteLine("After Replacements:" & _ vbCrLf & builder1.ToString() & vbCrLf & _ builder2.ToString()) End Sub " Main
End Class
</source>
Use StringBuilder for fast processing strings
<source lang="vbnet"> Imports System Imports System.Text Public Class MainClass
Shared Sub Main() Dim s1 As String = "One,Two,Three www . vbex . com" Const Space As Char = " "c Const Comma As Char = ","c Dim delimiters( ) As Char = {Space, Comma} Dim ctr As Integer = 0 Dim resultArray As String( ) = s1.Split(delimiters) Dim output As New StringBuilder( ) Dim subString As String For Each subString In resultArray ctr = ctr + 1 output.AppendFormat("{0} : {1}" & _ Environment.NewLine, ctr, subString) Next subString Console.WriteLine(output.ToString( )) End Sub
End Class
</source>
Use StringBuilder Indexer
<source lang="vbnet"> Imports System Imports System.Text Public Class MainClass
Shared Sub Main() Dim i As Integer Dim buffer As StringBuilder = _ New StringBuilder("Hello, how are you?") For i = 0 To buffer.Length - 1 Console.WriteLine(buffer(i)) Next End Sub " Main
End Class
</source>