Working with Strings in Visual Basic

Revision as of 19:37, 13 August 2007 by Neil (Talk | contribs)

Revision as of 19:37, 13 August 2007 by Neil (Talk | contribs)

PreviousTable of ContentsNext
Working with Dates and Times in Visual BasicObject Oriented Programming with Visual Basic


In the real world, humans communicate usign words and sentences. Given that most computer applications need to interact with humans it is not surprising that the average Visual Basic programmer spends a lot of time dealing with words and sentences in the form of String when developing applications.

In this chapter we will explore the subject of manipulating strings in Visual Basic.

Joining Strings in Visual Basic

The process of combining two strings together to form one string is called concatenation. Strings are concatenated in Visual Basic using the ampersand (&) operator. For example, the following Visual Basic code sample combines three strings together to create a single string, which is assigned to a third string variable:

Dim strFirstName As String = "Fred"
Dim strLastName As String = "Smith"
Dim strTitle As String = 'Mr."
Dim strSalutation As String

strSalutation = strTitle & " " & strFirstName & " " & strLastName

Note that the above example also puts space characters between each string. The above code, therefore, will assign the following string to the strSalutation variable:

Mr. Fred Smith

String concatenation does not have to be limited to variables. String literals may also be included in a concatenation. String literals are strings of text placed directly into quotes. For example the following variation of the above example creates a string which reads "Hello Mr. Fred Smith":

Dim strFirstName As String = "Fred"
Dim strLastName As String = "Smith"
Dim strTitle As String = 'Mr."
Dim strSalutation As String

strSalutation = "Hello" & strTitle & " " & strFirstName & " " & strLastName

Finding the Length of a String

It is common to need to find out the number of characters in any given string. Visual Basic provides mechanisms for finding the length of both string variables and string literals. The length of a string literal can be obtained using the Len() function, which takes the string as an argument and returns the length:

Dim decLength As Decimal

decLength = Len("This is a string literal")

This technique works equally well when dealing with string variables:

Dim decLength As Decimal
Dim strMyString As String = "This is a String Variable Value"

decLength = Len(strMyString)

It is important to understand that a String variable is really an object which has properties and methods like any other object. One such method is the Length() method which can also be used to obtain the length of a string variable:

Dim decLength As Decimal
Dim strMyString As String = "This is a String Variable Value"

decLength = strMyString.Length()

Extracting Text from the Beginning of String

A portion from the beginning of a string can be extracted using the Microsoft.VisualBasic.Left() function. This function takes two parameters, the string from which the text is to extracted and the number of characters to extract. For example, the following code extracts the word "This" from the string:

Dim strMyString As String = "This is a String Variable Value"

Microsoft.VisualBasic.Left(strMyString, 4)

Extracting Text from the End of a String

Text may be extracted from the end of a string using the Visual Basic Microsoft.VisualBasic.Right() function. This function accepts two parameters. The first parameter is either a string literal, or a string variable from which the text is to be extracted. The second parameter tells the function how many characters back from the end of the string to begin the extraction. For example, the following code excerpt will result in the word "Spring" being extracted from the string and assigned to the strLastWord variable:

Dim strLastWord As String

strLastWord = Microsoft.VisualBasic.Right("Paris in the Spring", 6)

Extracting Text from Anywhere in a String

So far we have looked at extracting text from the beginning and end of a string. Visual Basic also provides a function for extracting any any number of characters from any position in a string. This is achieved using the Visual Basic Mid() function.

The Mid() function accepts two mandatory and one optional parameter as follows:

  • The string literal or variable from which the text is to be extracted
  • The starting character position in the string from which the text extraction should begin
  • Optionally, the number of characters to extract. If omitted all characters from the start position to the end of the string are extracted.

The following Visual Basic code excerpt extracts the word "Paris" from the string literal and assigns it to the strMidString variable:

Dim strMidString As String

strMidString = Mid("Visit Paris today", 7, 5 )

Searching for a Substring

It is quite common to need to search a string for the occurrence of another string (otherwise known as a substring). To find out if a string contains a particular substring in Visual Basic we use the Instr() function.

The Visual Basic Instr() function accepts one optional, and two mandatory parameters. The function is a little odd in that it is the first parameter which is optional (most other function always make the first parameter mandatory). The syntax for using Instr() is as follows:

Instr( [start position], string, substring )

The parameters accepted by Intr() are as follows:

  • start position - (Optional) Dictates where in the string to begin the search. If this parameter is omitted the search begins from the start of the string.
  • string - The string literal or string variable in which the search is to be performed
  • substring - The substring for which to search

If a match to the substring is found, Instr() returns the character location of the start of the substring. If no match is found, the function returns 0.

The following Visual Basic code excerpt uses Instr() to locate the first instance of a space character and then uses the Mid() function to extract the rest of the string thereby extracting the last name from the person's full name:

Dim strFullName As String = "John Smith"
Dim strLastName As String

strLastName = Mid( StrFullName, Instr(strFullName, " "))

Trimming Leading and Trailing Spaces from a String

In the above example you may have noticed that the Mid() function returned us the last name of the customer, but also extracted the space character. It is extremely common when handling strings in Visual Basic to find that either leading or trailing spaces need to be cropped from a string. To address this need, Visual Basic provides the following three functions. All three functions take as a single parameter the string to be trimmed and return the modified string:

  • Trim() - Removes all spaces from the beginning and end of the specified string.
  • LTrim() - Removes all spaces from the beginning of the specified string.
  • RTrim() - Removes all spaces from the end of the specified string.

Using the Trim() function we can now remove the leading space from our previous example:

Dim strFullName As String = "John Smith"
Dim strLastName As String

strLastName = Trim ( Mid( StrFullName, Instr(strFullName, " ")) )

Replacing Text in String

Visual Basic provide the Replace() function for the purposes of replacing some text in a string with some other text. The syntax for the Replace() function is as follows:

Replace( string, searchtext, replacetext )

string represents the string in which to perform the search and replace. searchtext identifies the text which is to be replaced. replacetext represents the text with which the located text is to replaced.

The following Visual Basic code excerpt will replace the word "Paris" with the word "London":

Dim strMyText As String = "Visit Paris Today"
Dim strNewtext As String

strNewText = Replace ( strMyText, "Paris", "London")

Note that the Replace() function will replace all instances of the substring with the new string. For example, the following code will result in a string which reads "Visit London Today. Flights to London are cheaper":

strNewText = Replace ( "Visit Paris Today. Flights to Paris are Cheaper", "Paris", "London" )