Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
.NET Framework 3.5
System Namespace
String Class
String Methods
Substring Method
 Substring Method (Int32)

  Switch on low bandwidth view
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5

Other versions are also available for the following:
.NET Framework Class Library
String..::.Substring Method (Int32)

Updated: October 2008

Retrieves a substring from this instance. The substring starts at a specified character position.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)
Visual Basic (Declaration)
Public Function Substring ( _
    startIndex As Integer _
) As String
Visual Basic (Usage)
Dim instance As String
Dim startIndex As Integer
Dim returnValue As String

returnValue = instance.Substring(startIndex)
C#
public string Substring(
    int startIndex
)
Visual C++
public:
String^ Substring(
    int startIndex
)
JScript
public function Substring(
    startIndex : int
) : String

Parameters

startIndex
Type: System..::.Int32
The zero-based starting character position of a substring in this instance.

Return Value

Type: System..::.String
A String object equivalent to the substring that begins at startIndex in this instance, or Empty if startIndex is equal to the length of this instance.
ExceptionCondition
ArgumentOutOfRangeException

startIndex is less than zero or greater than the length of this instance.

The index is zero-based.

NoteNote:

   This method does not modify the value of the current instance. Instead, it returns a new string that begins at the startIndex position in the current string.

The following example demonstrates obtaining a substring from a string.

Visual Basic
Public Class SubStringTest

    Public Shared Sub Main()
        Dim info As String() = {"Name: Felica Walker", "Title: Mz.", "Age: 47", "Location: Paris", "Gender: F"}
        Dim found As Integer = 0

        Console.WriteLine("The initial values in the array are:")
        Dim s As String
        For Each s In  info
            Console.WriteLine(s)

        Next s
        Console.WriteLine("{0}We want to retrieve only the key information. That is:", Environment.NewLine)

        For Each s In  info
            found = s.IndexOf(":")
            Console.WriteLine(s.Substring((found + 1)).Trim())
        Next s
    End Sub 'Main
End Class 'SubStringTest
' The example displays the following output to the console:
'       The initial values in the array are:
'       Name: Felica Walker
'       Title: Mz.
'       Age: 47
'       Location: Paris
'       Gender: F
'       
'       We want to retrieve only the key information. That is:
'       Felica Walker
'       Mz.
'       47
'       Paris
'       F

C#
using System;

public class SubStringTest {
    public static void Main() {

        string [] info = {"Name: Felica Walker", "Title: Mz.", "Age: 47", "Location: Paris", "Gender: F"};
        int found = 0;

        Console.WriteLine("The initial values in the array are:");
        foreach (string s in info)
            Console.WriteLine(s);

        Console.WriteLine("{0}We want to retrieve only the key information. That is:", Environment.NewLine);        

        foreach (string s in info) {
            found = s.IndexOf(":");
            Console.WriteLine(s.Substring(found + 1).Trim());
        }
    }
}
// The example displays the following output to the console:
//       The initial values in the array are:
//       Name: Felica Walker
//       Title: Mz.
//       Age: 47
//       Location: Paris
//       Gender: F
//       
//       We want to retrieve only the key information. That is:
//       Felica Walker
//       Mz.
//       47
//       Paris
//       F

Visual C++
using namespace System;
using namespace System::Collections;
int main()
{
   array<String^>^info = {"Name: Felica Walker","Title: Mz.","Age: 47","Location: Paris","Gender: F"};
   int found = 0;
   Console::WriteLine( "The initial values in the array are:" );
   IEnumerator^ myEnum1 = info->GetEnumerator();
   while ( myEnum1->MoveNext() )
   {
      String^ s = safe_cast<String^>(myEnum1->Current);
      Console::WriteLine( s );
   }

   Console::WriteLine( "\nWe want to retrieve only the key information. That is:" );
   IEnumerator^ myEnum2 = info->GetEnumerator();
   while ( myEnum2->MoveNext() )
   {
      String^ s = safe_cast<String^>(myEnum2->Current);
      found = s->IndexOf( ":" );
      Console::WriteLine( s->Substring( found + 1 )->Trim() );
   }
}
// The example displays the following output to the console:
//       The initial values in the array are:
//       Name: Felica Walker
//       Title: Mz.
//       Age: 47
//       Location: Paris
//       Gender: F
//       
//       We want to retrieve only the key information. That is:
//       Felica Walker
//       Mz.
//       47
//       Paris
//       F

JScript
import System;

public class SubStringTest {
    public static function Main() : void {

        var info : String [] = ["Name: Felica Walker", "Title: Mz.", "Age: 47", "Location: Paris", "Gender: F"];
        var found : int = 0;

        Console.WriteLine("The initial values in the array are:");
        for (var i : int in info)
            Console.WriteLine(info[i]);

        Console.WriteLine("{0}We want to retrieve only the key information. That is:", Environment.NewLine);        

        for (i in info) {
            found = info[i].IndexOf(":");
            Console.WriteLine(info[i].Substring(found + 1).Trim());
        }
    }
}
SubStringTest.Main();
// The example displays the following output to the console:
//       The initial values in the array are:
//       Name: Felica Walker
//       Title: Mz.
//       Age: 47
//       Location: Paris
//       Gender: F
//       
//       We want to retrieve only the key information. That is:
//       Felica Walker
//       Mz.
//       47
//       Paris
//       F

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0

XNA Framework

Supported in: 3.0, 2.0, 1.0

Date

History

Reason

October 2008

Added a note that the method returns a new String object.

Customer feedback.

Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
StartIndex values      jstout   |   Edit   |   Show History

In the notes about Exceptions it says that if 'startIndex is less than zero or greater than the length of this instance' then the ArgumentOutOfRangeException is raised.

Shouldn't this be 'startIndex is less than zero or greater than the length of this instance - 1' since the String class methods are 0-based, and this is clearly stated in the Remarks?

The notes about Exceptions for SubString(Int32,Int32) much clearer.

Flag as ContentBug
Processing
© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker