Append Char to StringBuilder
Option Strict On
Imports System.Text
Public Module modMain
Public Sub Main()
Dim chars() As Char = {"T"c,"h"c,"i"c,"s"c," "c,"i"c,"s"c, _
" "c,"a"c,"n"c," "c,"a"c,"r"c,"r"c,"a"c, _
"y"c," "c,"o"c,"f"c," "c,"C"c,"h"c, _
"a"c,"r"c,"s"c}
Dim convertedChars As New StringBuilder
For Each ch As Char in chars
convertedChars.Append(ch)
Next
Dim displayString As String = convertedChars.ToString()
Console.WriteLine(displayString)
End Sub
End Module
This is an array of Chars
Demonstrating method Replace
Imports System.Text
Imports System.Windows.Forms
Module Tester
Sub Main()
Dim builder1 As StringBuilder = New StringBuilder("Happy Birthday")
Dim builder2 As StringBuilder = New StringBuilder("good bye ")
builder1.Replace("H", "G")
builder2.Replace("g"c, "G"c, 0, 5)
Console.WriteLine(builder1.ToString() & vbCrLf & _
builder2.ToString())
End Sub " Main
End Module
Gappy Birthday
Good bye
Demonstrating methods Insert and Remove of the StringBuilder class
Imports System.Text
Imports System.Windows.Forms
Module Tester
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 = 12345677890
Dim singleValue As Single = 2.5
Dim doubleValue As Double = 33.333
Dim buffer As StringBuilder = New StringBuilder()
Dim output As String
" 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, " ")
output = "buffer after inserts:" & vbCrLf & _
buffer.ToString() & vbCrLf & vbCrLf
buffer.Remove(12, 1) " delete 5 in 2.5
buffer.Remove(2, 4) " delete 33.3 in 33.333
output &= "buffer after Removes:" & vbCrLf & _
buffer.ToString()
Console.WriteLine(output)
End Sub " Main
End Module
buffer after inserts:
33.333 2.5 12345677890 7 K True abcdef good bye hello
buffer after Removes:
33 2. 12345677890 7 K True abcdef good bye hello
Demonstrating StringBuilder Append methods
Imports System.Text
Imports System.Windows.Forms
Module modBuilderAppend
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 = 7
Dim longValue As Long = 1000000
Dim singleValue As Single = 2.5
Dim doubleValue As Double = 33.333
Dim buffer As StringBuilder = New StringBuilder()
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
End Module
buffer = hello good bye abcdef abc True Z 7 1000000 2.5 33.333
Demonstrating StringBuilder class constructors
Imports System.Text
Module Tester
Sub Main()
Dim buffer1, buffer2, buffer3 As StringBuilder
buffer1 = New StringBuilder()
buffer2 = New StringBuilder(10)
buffer3 = New StringBuilder("hello")
Console.WriteLine(buffer1.ToString())
Console.WriteLine(buffer2.ToString())
Console.WriteLine(buffer3.ToString())
End Sub " Main
End Module
hello
Performance difference between String and StringBuilder
Imports System.Text
public class Test
public Shared Sub Main
Const ADD_STRING As String = "1234567890"
Dim num_trials As Long = 1000
Dim start_time As DateTime
Dim stop_time As DateTime
Dim elapsed_time As TimeSpan
Dim txt As String
Dim string_builder As New StringBuilder
txt = ""
start_time = Now
For i As Long = 1 To num_trials
txt = txt & ADD_STRING
Next i
stop_time = Now
elapsed_time = stop_time.Subtract(start_time)
Console.WriteLine(elapsed_time.TotalSeconds.ToString("0.000000"))
txt = ""
start_time = Now
For i As Long = 1 To num_trials
string_builder.Append(ADD_STRING)
Next i
txt = string_builder.ToString()
stop_time = Now
elapsed_time = stop_time.Subtract(start_time)
Console.WriteLine(elapsed_time.TotalSeconds.ToString("0.000000"))
End Sub
End class
0.015625
0.000000
StringBuilder AppendFormat
Imports System.Text
Class Tester
Public Shared Sub Main( )
Dim s1 As String = "One,Two,Three Liberty Associates, Inc."
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
Your balance as of May 16, 2002 is $ 19,950.40
StringBuilder.AppendFormat: {0:D} is ${1: #,###.00}
Imports System
public class Test
public Shared Sub Main
Dim objSB As New Text.StringBuilder
objSB.AppendFormat("Your balance as of {0:D} is ${1: #,###.00}", _
#5/16/2002#, 19950.4)
Console.WriteLine(objSB.ToString)
End Sub
End class
Your balance as of May 16, 2002 is $ 19,950.40
StringBuilder: Insert string, Append and Replace
Public Class Tester
Public Shared Sub Main
Dim result As New System.Text.StringBuilder("AA ")
result.Append("CCC. ")
result.Append("AAA").Append("rrr ").Append("eee")
result.Insert(3, "note to stop ")
result.Replace("CC", "rr")
result.Insert(0, vbNewLine)
Console.WriteLine(result.ToString())
End Sub
End Class
AA note to stop rrC. AAArrr eee
StringBuilder: Length, Capacity, EnsureCapacity
Imports System.Text
Module Tester
Sub Main()
Dim i As Integer
Dim buffer As StringBuilder = New StringBuilder("Hello, how are you?")
" use Length and Capacity properties
Console.WriteLine("buffer = " & buffer.ToString & _
vbCrLf & "Length = " & buffer.Length & vbCrLf & _
"Capacity = " & buffer.Capacity)
buffer.EnsureCapacity(75)
Console.WriteLine("New capacity = " & buffer.Capacity)
" truncate StringBuilder by setting Length property
buffer.Length = 10
Console.WriteLine("New Length = " & buffer.Length )
End Sub
End Module
buffer = Hello, how are you?
Length = 19
Capacity = 32
New capacity = 75
New Length = 10
StringBuilder.ToStrings
Imports System
public class Test
public Shared Sub Main
Dim objSB As New Text.StringBuilder("some text")
Console.WriteLine(objSB.ToString)
End Sub
End class
some text
Use StringBuilder Indexer
Imports System.Text
Module Tester
Sub Main()
Dim i As Integer
Dim buffer As StringBuilder = New StringBuilder("Hello, how are you?")
" use StringBuilder Indexer
For i = 0 To buffer.Length - 1
Console.WriteLine(buffer(i))
Next
End Sub
End Module
H
e
l
l
o
,
h
o
w
a
r
e
y
o
u
?
Use StringBuilder to reverse a string
Imports System
public class Test
public Shared Sub Main
Dim data As String = "abcdefgh"
Dim objSB As New Text.StringBuilder
Dim intLength As Integer = Len(data)
Dim intChar As Integer
Dim chr As Char
Dim objTS As TimeSpan
Dim dteStart As Date
objSB.Capacity = intLength
objSB.Append(data)
dteStart = Now()
For intChar = 0 To CInt(objSB.Length / 2 - 1)
chr = objSB.Chars(intChar)
objSB.Chars(intChar) = objSB.Chars(intLength - intChar - 1)
objSB.Chars(intLength - intChar - 1) = chr
Next
objTS = Now().Subtract(dteStart)
Console.WriteLine(objTS.ToString)
Console.WriteLine(objSB.ToString)
End Sub
End class
00:00:00
hgfedcba