String.Substring Methode

Definitie

Hiermee haalt u een subtekenreeks op uit dit exemplaar.

Dit lid is overbelast. Voor volledige informatie over dit lid, inclusief syntaxis, gebruik en voorbeelden, klikt u op een naam in de overbelastingslijst.

Overloads

Name Description
Substring(Int32)

Hiermee haalt u een subtekenreeks op uit dit exemplaar. De subtekenreeks begint op een opgegeven tekenpositie en gaat verder met het einde van de tekenreeks.

Substring(Int32, Int32)

Hiermee haalt u een subtekenreeks op uit dit exemplaar. De subtekenreeks begint op een opgegeven tekenpositie en heeft een opgegeven lengte.

Substring(Int32)

Bron:
String.Manipulation.cs
Bron:
String.Manipulation.cs
Bron:
String.Manipulation.cs
Bron:
String.Manipulation.cs
Bron:
String.Manipulation.cs

Hiermee haalt u een subtekenreeks op uit dit exemplaar. De subtekenreeks begint op een opgegeven tekenpositie en gaat verder met het einde van de tekenreeks.

public:
 System::String ^ Substring(int startIndex);
public string Substring(int startIndex);
member this.Substring : int -> string
Public Function Substring (startIndex As Integer) As String

Parameters

startIndex
Int32

De op nul gebaseerde begintekenpositie van een subtekenreeks in dit exemplaar.

Retouren

Een tekenreeks die gelijk is aan de subtekenreeks die in dit geval begint startIndex of Empty die startIndex gelijk is aan de lengte van dit exemplaar.

Uitzonderingen

startIndex is kleiner dan nul of groter dan de lengte van dit exemplaar.

Voorbeelden

In het volgende voorbeeld ziet u hoe u een subtekenreeks uit een tekenreeks verkrijgt.

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("\nWe want to retrieve only the key information. That is:");        
foreach (string s in info) 
{
    found = s.IndexOf(": ");
    Console.WriteLine("   {0}", s.Substring(found + 2));
}

// The example displays the following output:
//       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
let info = 
    [| "Name: Felica Walker"; "Title: Mz."
       "Age: 47"; "Location: Paris"; "Gender: F" |]

printfn "The initial values in the array are:"
for s in info do
    printfn $"{s}"

printfn "\nWe want to retrieve only the key information. That is:"
for s in info do
    let found = s.IndexOf ": "
    printfn $"   {s.Substring(found + 2)}"

// The example displays the following output:
//       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
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:")
        For Each s As String In info
            Console.WriteLine(s)
        Next s

        Console.WriteLine(vbCrLf + "We want to retrieve only the key information. That is:")
        For Each s As String In info
            found = s.IndexOf(": ")
            Console.WriteLine("   {0}", s.Substring(found + 2))
        Next s
    End Sub 
End Class 
' The example displays the following output:
'       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

In het volgende voorbeeld wordt de Substring methode gebruikt om sleutel-/waardeparen te scheiden die worden gescheiden door een gelijkteken (=).

String[] pairs = { "Color1=red", "Color2=green", "Color3=blue",
                 "Title=Code Repository" };
foreach (var pair in pairs) 
{
    int position = pair.IndexOf("=");
    if (position < 0)
        continue;
    Console.WriteLine("Key: {0}, Value: '{1}'", 
                   pair.Substring(0, position),
                   pair.Substring(position + 1));
}                          

// The example displays the following output:
//     Key: Color1, Value: 'red'
//     Key: Color2, Value: 'green'
//     Key: Color3, Value: 'blue'
//     Key: Title, Value: 'Code Repository'
let pairs = 
    [| "Color1=red"; "Color2=green"; "Color3=blue"
       "Title=Code Repository" |]
for pair in pairs do
    let position = pair.IndexOf "="
    if position >= 0 then
        printfn $"Key: {pair.Substring(0, position)}, Value: '{pair.Substring(position + 1)}'"

// The example displays the following output:
//     Key: Color1, Value: 'red'
//     Key: Color2, Value: 'green'
//     Key: Color3, Value: 'blue'
//     Key: Title, Value: 'Code Repository'
Module Example
   Public Sub Main()
      Dim pairs() As String = { "Color1=red", "Color2=green", "Color3=blue",
                                "Title=Code Repository" }
      For Each pair In pairs
         Dim position As Integer = pair.IndexOf("=")
         If position < 0 then Continue For
         Console.WriteLine("Key: {0}, Value: '{1}'", 
                           pair.Substring(0, position),
                           pair.Substring(position + 1))
      Next                          
   End Sub
End Module
' The example displays the following output:
'     Key: Color1, Value: 'red'
'     Key: Color2, Value: 'green'
'     Key: Color3, Value: 'blue'
'     Key: Title, Value: 'Code Repository'

De IndexOf methode wordt gebruikt om de positie van het gelijkteken in de tekenreeks op te halen. Met de aanroep naar de Substring(Int32, Int32) methode wordt de sleutelnaam geëxtraheerd, die begint met het eerste teken in de tekenreeks en wordt uitgebreid voor het aantal tekens dat door de aanroep naar de IndexOf methode wordt geretourneerd. Met de aanroep naar de Substring(Int32) methode wordt vervolgens de waarde geëxtraheerd die aan de sleutel is toegewezen. Het begint bij één tekenpositie buiten het gelijkteken en strekt zich uit tot het einde van de tekenreeks.

Opmerkingen

U roept de Substring(Int32) methode aan om een subtekenreeks te extraheren uit een tekenreeks die begint op een opgegeven tekenpositie en eindigt aan het einde van de tekenreeks. De positie van het beginteken is gebaseerd op nul; met andere woorden, het eerste teken in de tekenreeks bevindt zich op index 0, niet index 1. Als u een subtekenreeks wilt extraheren die begint op een opgegeven tekenpositie en eindigt vóór het einde van de tekenreeks, roept u de Substring(Int32, Int32) methode aan.

Note

Met deze methode wordt de waarde van het huidige exemplaar niet gewijzigd. In plaats daarvan wordt een nieuwe tekenreeks geretourneerd die begint op de startIndex positie in de huidige tekenreeks.

Als u een subtekenreeks wilt extraheren die begint met een bepaald teken of een bepaalde tekenreeks, roept u een methode aan, zoals IndexOf of IndexOf om de waarde van startIndex. In het tweede voorbeeld ziet u dit; hiermee wordt een sleutelwaarde geëxtraheerd die één tekenpositie na het = teken begint.

Als startIndex deze gelijk is aan nul, retourneert de methode de oorspronkelijke tekenreeks ongewijzigd.

Zie ook

Van toepassing op

Substring(Int32, Int32)

Bron:
String.Manipulation.cs
Bron:
String.Manipulation.cs
Bron:
String.Manipulation.cs
Bron:
String.Manipulation.cs
Bron:
String.Manipulation.cs

Hiermee haalt u een subtekenreeks op uit dit exemplaar. De subtekenreeks begint op een opgegeven tekenpositie en heeft een opgegeven lengte.

public:
 System::String ^ Substring(int startIndex, int length);
public string Substring(int startIndex, int length);
member this.Substring : int * int -> string
Public Function Substring (startIndex As Integer, length As Integer) As String

Parameters

startIndex
Int32

De op nul gebaseerde begintekenpositie van een subtekenreeks in dit exemplaar.

length
Int32

Het aantal tekens in de subtekenreeks.

Retouren

Een tekenreeks die gelijk is aan de subtekenreeks van de lengte length die in dit exemplaar begint startIndex , of Empty als startIndex deze gelijk is aan de lengte van dit exemplaar en length nul is.

Uitzonderingen

startIndex plus length geeft een positie aan die zich niet binnen dit exemplaar bevindt.

– of –

startIndex of length kleiner is dan nul.

Voorbeelden

In het volgende voorbeeld ziet u een eenvoudige aanroep van de Substring(Int32, Int32) methode waarmee twee tekens uit een tekenreeks worden geëxtraheerd vanaf de zesde tekenpositie (dat wil gezegd, bij index vijf).

String value = "This is a string.";
int startIndex = 5;
int length = 2;
String substring = value.Substring(startIndex, length);
Console.WriteLine(substring);

// The example displays the following output:
//       is
let value = "This is a string."
let startIndex = 5
let length = 2
let substring = value.Substring(startIndex, length)
printfn $"{substring}"

// The example displays the following output:
//       is
Module Example
   Public Sub Main()
      Dim value As String = "This is a string."
      Dim startIndex As Integer = 5
      Dim length As Integer = 2
      Dim substring As String = value.Substring(startIndex, length)
      Console.WriteLine(substring)
   End Sub
End Module
' The example displays the following output:
'       is

In het volgende voorbeeld wordt de Substring(Int32, Int32) methode in de volgende drie gevallen gebruikt om subtekenreeksen binnen een tekenreeks te isoleren. In twee gevallen worden de subtekenreeksen gebruikt in vergelijkingen en in het derde geval wordt er een uitzondering gegenereerd omdat ongeldige parameters zijn opgegeven.

  • Het extraheert het enkele teken op de derde positie in de tekenreeks (op index 2) en vergelijkt het met een 'c'. Deze vergelijking retourneert true.

  • Het extraheert nul tekens vanaf de vierde positie in de tekenreeks (bij index 3) en geeft deze door aan de IsNullOrEmpty methode. Dit retourneert waar omdat de aanroep naar de Substring methode retourneert String.Empty.

  • Er wordt geprobeerd één teken te extraheren vanaf de vierde positie in de tekenreeks. Omdat er op die positie geen teken staat, genereert de methodeaanroep een ArgumentOutOfRangeException uitzondering.

string myString = "abc";
bool test1 = myString.Substring(2, 1).Equals("c"); // This is true.
Console.WriteLine(test1);
bool test2 = string.IsNullOrEmpty(myString.Substring(3, 0)); // This is true.
Console.WriteLine(test2);
try
{
   string str3 = myString.Substring(3, 1); // This throws ArgumentOutOfRangeException.
   Console.WriteLine(str3);
}
catch (ArgumentOutOfRangeException e)
{
   Console.WriteLine(e.Message);
}

// The example displays the following output:
//       True
//       True
//       Index and length must refer to a location within the string.
//       Parameter name: length
let myString = "abc"
let test1 = myString.Substring(2, 1).Equals "c" // This is true.
printfn $"{test1}"
let test2 = String.IsNullOrEmpty(myString.Substring(3, 0)) // This is true.
printfn $"{test2}"
try
    let str3 = myString.Substring(3, 1) // This throws ArgumentOutOfRangeException.
    printfn $"{str3}"
with :? ArgumentOutOfRangeException as e ->
    printfn $"{e.Message}"

// The example displays the following output:
//       True
//       True
//       Index and length must refer to a location within the string.
//       Parameter name: length
Public Class Sample
   Public Shared Sub Main()
      Dim myString As String = "abc"
      Dim test1 As Boolean = myString.Substring(2, 1).Equals("c") ' This is true.
      Console.WriteLine(test1)
      Dim test2 As Boolean = String.IsNullOrEmpty(myString.Substring(3, 0)) ' This is true.
      Console.WriteLine(test2)
      Try  
         Dim str3 As String = myString.Substring(3, 1) ' This throws ArgumentOutOfRangeException.
         Console.WriteLine(str3)
      Catch e As ArgumentOutOfRangeException
         Console.WriteLIne(e.Message)
      End Try   
   End Sub
End Class 
' The example displays the following output:
'       True
'       True
'       Index and length must refer to a location within the string.
'       Parameter name: length

In het volgende voorbeeld wordt de Substring methode gebruikt om sleutel-/waardeparen te scheiden die worden gescheiden door een gelijkteken (=).

String[] pairs = { "Color1=red", "Color2=green", "Color3=blue",
                 "Title=Code Repository" };
foreach (var pair in pairs) 
{
    int position = pair.IndexOf("=");
    if (position < 0)
        continue;
    Console.WriteLine("Key: {0}, Value: '{1}'", 
                   pair.Substring(0, position),
                   pair.Substring(position + 1));
}                          

// The example displays the following output:
//     Key: Color1, Value: 'red'
//     Key: Color2, Value: 'green'
//     Key: Color3, Value: 'blue'
//     Key: Title, Value: 'Code Repository'
let pairs = 
    [| "Color1=red"; "Color2=green"; "Color3=blue"
       "Title=Code Repository" |]
for pair in pairs do
    let position = pair.IndexOf "="
    if position >= 0 then
        printfn $"Key: {pair.Substring(0, position)}, Value: '{pair.Substring(position + 1)}'"

// The example displays the following output:
//     Key: Color1, Value: 'red'
//     Key: Color2, Value: 'green'
//     Key: Color3, Value: 'blue'
//     Key: Title, Value: 'Code Repository'
Module Example
   Public Sub Main()
      Dim pairs() As String = { "Color1=red", "Color2=green", "Color3=blue",
                                "Title=Code Repository" }
      For Each pair In pairs
         Dim position As Integer = pair.IndexOf("=")
         If position < 0 then Continue For
         Console.WriteLine("Key: {0}, Value: '{1}'", 
                           pair.Substring(0, position),
                           pair.Substring(position + 1))
      Next                          
   End Sub
End Module
' The example displays the following output:
'     Key: Color1, Value: 'red'
'     Key: Color2, Value: 'green'
'     Key: Color3, Value: 'blue'
'     Key: Title, Value: 'Code Repository'

De IndexOf methode wordt gebruikt om de positie van het gelijkteken in de tekenreeks op te halen. Met de aanroep naar de Substring(Int32, Int32) methode wordt de sleutelnaam geëxtraheerd, die begint met het eerste teken in de tekenreeks en wordt uitgebreid voor het aantal tekens dat door de aanroep naar de IndexOf methode wordt geretourneerd. Met de aanroep naar de Substring(Int32) methode wordt vervolgens de waarde geëxtraheerd die aan de sleutel is toegewezen. Het begint bij één tekenpositie buiten het gelijkteken en strekt zich uit tot het einde van de tekenreeks.

Opmerkingen

U roept de Substring(Int32, Int32) methode aan om een subtekenreeks te extraheren uit een tekenreeks die begint op een opgegeven tekenpositie en eindigt vóór het einde van de tekenreeks. De positie van het beginteken is gebaseerd op nul; met andere woorden, het eerste teken in de tekenreeks bevindt zich op index 0, niet index 1. Als u een subtekenreeks wilt extraheren die begint op een opgegeven tekenpositie en verdergaat met het einde van de tekenreeks, roept u de Substring(Int32) methode aan.

Note

Met deze methode wordt de waarde van het huidige exemplaar niet gewijzigd. In plaats daarvan wordt een nieuwe tekenreeks geretourneerd met length tekens die beginnen vanaf de startIndex positie in de huidige tekenreeks.

De length parameter vertegenwoordigt het totale aantal tekens dat moet worden geëxtraheerd uit het huidige tekenreeksexemplaren. Dit omvat het beginteken dat is gevonden bij de index startIndex. Met andere woorden, de Substring methode probeert tekens te extraheren uit index startIndex naar index startIndex + length - 1.

Als u een subtekenreeks wilt extraheren die begint met een bepaald teken of een bepaalde tekenreeks, roept u een methode aan, zoals IndexOf of LastIndexOf om de waarde van startIndex.

Als de subtekenreeks moet worden uitgebreid van startIndex naar een opgegeven tekenreeks, kunt u een methode aanroepen, zoals IndexOf of LastIndexOf om de index van het eindteken of de tekenreeks op te halen. U kunt die waarde vervolgens als volgt converteren naar een indexpositie in de tekenreeks:

  • Als u hebt gezocht naar één teken dat het einde van de subtekenreeks markeert, is de length parameter gelijk aanendIndex - startIndex+ 1, waarbij endIndex de retourwaarde van de IndexOf of LastIndexOf methode is. In het volgende voorbeeld wordt een doorlopend blok met 'b'-tekens uit een tekenreeks geëxtraheerd.

    String s = "aaaaabbbcccccccdd";
    Char charRange = 'b';
    int startIndex = s.IndexOf(charRange);
    int endIndex = s.LastIndexOf(charRange);
    int length = endIndex - startIndex + 1;
    Console.WriteLine("{0}.Substring({1}, {2}) = {3}",
                    s, startIndex, length, 
                    s.Substring(startIndex, length));
    
    // The example displays the following output:
    //       aaaaabbbcccccccdd.Substring(5, 3) = bbb
    
    let s = "aaaaabbbcccccccdd"
    let charRange = 'b'
    let startIndex = s.IndexOf charRange
    let endIndex = s.LastIndexOf charRange
    let length = endIndex - startIndex + 1
    printfn $"{s}.Substring({startIndex}, {length}) = {s.Substring(startIndex, length)}"
    
    // The example displays the following output:
    //       aaaaabbbcccccccdd.Substring(5, 3) = bbb
    
    Module Example
       Public Sub Main()
          Dim s As String = "aaaaabbbcccccccdd"
          Dim charRange As Char = "b"c
          Dim startIndex As Integer = s.Indexof(charRange)
          Dim endIndex As Integer = s.LastIndexOf(charRange)
          Dim length = endIndex - startIndex + 1
          Console.WriteLine("{0}.Substring({1}, {2}) = {3}",
                            s, startIndex, length, 
                            s.Substring(startIndex, length))
       End Sub
    End Module
    ' The example displays the following output:
    '     aaaaabbbcccccccdd.Substring(5, 3) = bbb
    
  • Als u hebt gezocht naar meerdere tekens die het einde van de subtekenreeks markeren, is de length parameter gelijk aan, waar endIndex is de retourwaarde van de + of endMatchLength methode en - is de lengte van de tekenreeks die het einde van de subtekenreeks markeertstartIndexendIndexIndexOfLastIndexOfendMatchLength. In het volgende voorbeeld wordt een blok tekst geëxtraheerd dat een XML-element <definition> bevat.

    String s = "<term>extant<definition>still in existence</definition></term>";
    String searchString = "<definition>";
    int startIndex = s.IndexOf(searchString);
    searchString = "</" + searchString.Substring(1);
    int endIndex = s.IndexOf(searchString);
    String substring = s.Substring(startIndex, endIndex + searchString.Length - startIndex);
    Console.WriteLine("Original string: {0}", s);
    Console.WriteLine("Substring;       {0}", substring); 
    
    // The example displays the following output:
    //     Original string: <term>extant<definition>still in existence</definition></term>
    //     Substring;       <definition>still in existence</definition>
    
    let s = "<term>extant<definition>still in existence</definition></term>"
    let searchString = "<definition>"
    let startIndex = s.IndexOf(searchString)
    let searchString = "</" + searchString.Substring 1
    let endIndex = s.IndexOf searchString
    let substring = s.Substring(startIndex, endIndex + searchString.Length - startIndex)
    printfn $"Original string: {s}"
    printfn $"Substring;       {substring}"
    
    // The example displays the following output:
    //     Original string: <term>extant<definition>still in existence</definition></term>
    //     Substring;       <definition>still in existence</definition>
    
    Module Example
       Public Sub Main()
          Dim s As String = "<term>extant<definition>still in existence</definition></term>"
          Dim searchString As String = "<definition>"
          Dim startindex As Integer = s.IndexOf(searchString)
          searchString = "</" + searchString.Substring(1)
          Dim endIndex As Integer = s.IndexOf(searchString)
          Dim substring As String = s.Substring(startIndex, endIndex + searchString.Length - StartIndex)
          Console.WriteLine("Original string: {0}", s)
          Console.WriteLine("Substring;       {0}", substring) 
       End Sub
    End Module
    ' The example displays the following output:
    '   Original string: <term>extant<definition>still in existence</definition></term>
    '   Substring;       <definition>still in existence</definition>
    
  • Als het teken of de tekenreeks niet is opgenomen in het einde van de subtekenreeks, is de length parameter gelijk endIndex - startIndexaan , waar endIndex is de retourwaarde van de IndexOf of LastIndexOf methode.

Als startIndex gelijk is aan nul en length gelijk is aan de lengte van de huidige tekenreeks, retourneert de methode de oorspronkelijke tekenreeks ongewijzigd.

Zie ook

Van toepassing op