VB.Net Tutorial/Data Type/StringBuilder
Содержание
- 1 Append Char to StringBuilder
- 2 Demonstrating method Replace
- 3 Demonstrating methods Insert and Remove of the StringBuilder class
- 4 Demonstrating StringBuilder Append methods
- 5 Demonstrating StringBuilder class constructors
- 6 Performance difference between String and StringBuilder
- 7 StringBuilder AppendFormat
- 8 StringBuilder.AppendFormat: {0:D} is ${1: #,###.00}
- 9 StringBuilder: Insert string, Append and Replace
- 10 StringBuilder: Length, Capacity, EnsureCapacity
- 11 StringBuilder.ToStrings
- 12 Use StringBuilder Indexer
- 13 Use StringBuilder to reverse a string
Append Char to StringBuilder
<source lang="vbnet">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</source>
This is an array of Chars
Demonstrating method Replace
<source lang="vbnet">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</source>
Gappy Birthday Good bye
Demonstrating methods Insert and Remove of the StringBuilder class
<source lang="vbnet">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</source>
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
<source lang="vbnet">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</source>
buffer = hello good bye abcdef abc True Z 7 1000000 2.5 33.333
Demonstrating StringBuilder class constructors
<source lang="vbnet">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</source>
hello
Performance difference between String and StringBuilder
<source lang="vbnet">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</source>
0.015625 0.000000
StringBuilder AppendFormat
<source lang="vbnet">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</source>
Your balance as of May 16, 2002 is $ 19,950.40
StringBuilder.AppendFormat: {0:D} is ${1: #,###.00}
<source lang="vbnet">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</source>
Your balance as of May 16, 2002 is $ 19,950.40
StringBuilder: Insert string, Append and Replace
<source lang="vbnet">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</source>
AA note to stop rrC. AAArrr eee
StringBuilder: Length, Capacity, EnsureCapacity
<source lang="vbnet">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</source>
buffer = Hello, how are you? Length = 19 Capacity = 32 New capacity = 75 New Length = 10
StringBuilder.ToStrings
<source lang="vbnet">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</source>
some text
Use StringBuilder Indexer
<source lang="vbnet">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</source>
H e l l o , h o w a r e y o u ?
Use StringBuilder to reverse a string
<source lang="vbnet">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</source>
00:00:00 hgfedcba