.NET Array Dictionary List String Sub ArrayList Cast Class Console Dates DataTable DateTime Enum File For Format If IndexOf Lambda LINQ Nothing Parse Process Property Regex Replace Select Sort Split StringBuilder Substring

Replace. This changes the contents of a String. It makes all instances of one substring become another substring. The Replace function on String is often useful.

Function details. It is important to know some of this Function's details. It cannot handle pattern so regular expressions. It can cause performance problems.

First example. Replace receives two parameters. The parameters can be literal strings embedded in your program or dynamic strings that are determined at runtime.

Tip: All instances of the first parameter's string data are replaced with the second parameter's string data.

Nothing: You can use an empty string literal or the Nothing literal to indicate an empty string.

Here: In this example, we replace the first word parameter with the second word parameter.

Based on: .NET 4.5

VB.NET program that uses Replace

Module Module1
    Sub Main()
	' Assign string to literal.
	Dim value1 As String = "XXpagitica"

	' Replace substring with another substring.
	Dim value2 As String = value1.Replace("XX", "Areo")
    End Sub
End Module



Every instance. Replace() will internally loop through the entire source string. It replaces all occurrences of the substring you want to replace.

Tip: This behavior is useful when dealing with common string replacements in programs.

But: If you do not understand this behavior you may end up writing inefficient code that has unneeded loops.

Here: The string containing the characters "Net" is replaced with the characters "Bottle". These substrings are case-sensitive.

VB.NET program that uses Replace on instances

Module Module1
    Sub Main()
	' Assign string to literal constant.
	Dim value1 As String = "Dot Net Perls is about Dot Net."

	' Replace every instance of the string.
	Dim value2 As String = value1.Replace("Net", "Bottle")
    End Sub
End Module


Dot Net Perls is about Dot Net.
Dot Bottle Perls is about Dot Bottle.

StringBuilder. This class has a Replace() that functions the same way as the String method. It has parameters that indicate the before and after substrings.


However: The StringBuilder class implements optimizations that can improve memory usage and speed when doing many replacements.

VB.NET program that uses StringBuilder Replace

Imports System.Text

Module Module1
    Sub Main()
	' Create new StringBuilder and initialize it.
	Dim builder As New StringBuilder("This is an example.")

	' Replace string in StringBuilder.
	builder.Replace("This", "Here")

	' Insert into StringBuilder.
	builder.Insert(0, "Sentence: ")
    End Sub
End Module


This is an example.
Here is an example.
Sentence: Here is an example.

Internals. StringBuilder contains a mutable character buffer. Its methods can modify this buffer in-place, avoiding many allocations that would occur if you were using String.

Tip: If you have many replacements to perform, using StringBuilder will likely perform better.

Optimization. We can change code that uses the String type inefficiently into code that uses the StringBuilder type. This can greatly help performance.

Tip: Often we can convert a string into a StringBuilder, and then use the Replace, Append and Insert methods on that StringBuilder.

Then: We can convert the StringBuilder back into a string with the ToString method.

Regex. Using regular expressions and the Regex class in System.Text RegularExpressions namespace is often a better solution than the Replace method on string.


Tip: Regular expressions allow you to do much more complex replacements with less code.

However: Simple replacements are faster to do in the String or StringBuilder classes. The regular expression parser has overhead.

A summary. The Replace function on String will allocate an entire new string. The StringBuilder's replacement method will change the internal buffer.

Replacements. These methods will loop through the string. They will replace all instances of the first parameter with the second parameter.