String.Substring Metoda

Definice

Načte podřetězec z této instance.Retrieves a substring from this instance.

Tento člen je přetížen.This member is overloaded. Podrobnější informace o tomto členu, včetně syntaxe, způsobu použití a příkladů, získáte kliknutím na název v seznamu přetížení.For complete information about this member, including syntax, usage, and examples, click a name in the overload list.

Přetížení

Substring(Int32)

Načte podřetězec z této instance.Retrieves a substring from this instance. Podřetězec začíná na zadané pozici znaku a pokračuje na konec řetězce.The substring starts at a specified character position and continues to the end of the string.

Substring(Int32, Int32)

Načte podřetězec z této instance.Retrieves a substring from this instance. Podřetězec začíná na zadané pozici znaku a má zadanou délku.The substring starts at a specified character position and has a specified length.

Substring(Int32)

Načte podřetězec z této instance.Retrieves a substring from this instance. Podřetězec začíná na zadané pozici znaku a pokračuje na konec řetězce.The substring starts at a specified character position and continues to the end of the string.

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

Parametry

startIndex
Int32

Počáteční pozice znaku v podřetězci vycházející z nuly v této instanci.The zero-based starting character position of a substring in this instance.

Návraty

Řetězec, který je ekvivalentní podřetězci, který začíná na startIndex v této instanci, nebo Empty, pokud startIndex je rovna délce této instance.A string that is equivalent to the substring that begins at startIndex in this instance, or Empty if startIndex is equal to the length of this instance.

Výjimky

startIndex je menší než nula nebo větší než délka této instance.startIndex is less than zero or greater than the length of this instance.

Příklady

Následující příklad ukazuje získání podřetězce z řetězce.The following example demonstrates obtaining a substring from a string.

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:");
   for each (String^ s in info) 
      Console::WriteLine(s);

   Console::WriteLine("\nWe want to retrieve only the key information. That is:");
   for each (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
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
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

Následující příklad používá metodu Substring k oddělení párů klíč/hodnota, které jsou odděleny znakem rovnosti ("=").The following example uses the Substring method to separate key/value pairs that are delimited by an equals ("=") character.

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'
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'

Metoda IndexOf slouží k získání pozice znaku rovná se v řetězci.The IndexOf method is used to get the position of the equals character in the string. Volání metody Substring(Int32, Int32) extrahuje název klíče, který začíná prvním znakem v řetězci a rozšiřuje počet znaků vrácený voláním metody IndexOf.The call to the Substring(Int32, Int32) method extracts the key name, which starts from the first character in the string and extends for the number of characters returned by the call to the IndexOf method. Volání metody Substring(Int32) pak extrahuje hodnotu přiřazenou ke klíči.The call to the Substring(Int32) method then extracts the value assigned to the key. Začíná na jednu pozici znaku za znakem rovná se a rozšiřuje na konec řetězce.It starts at one character position beyond the equals character and extends to the end of the string.

Poznámky

Zavoláte metodu Substring(Int32) pro extrakci podřetězce z řetězce, který začíná na zadané pozici znaku a končí na konci řetězce.You call the Substring(Int32) method to extract a substring from a string that begins at a specified character position and ends at the end of the string. Počáteční pozice znaku je počítána od nuly; Jinými slovy, první znak v řetězci je na indexu 0, ne index 1.The starting character position is a zero-based; in other words, the first character in the string is at index 0, not index 1. Chcete-li extrahovat podřetězec, který začíná na zadané pozici znaku a končí před koncem řetězce, zavolejte metodu Substring(Int32, Int32).To extract a substring that begins at a specified character position and ends before the end of the string, call the Substring(Int32, Int32) method.

Poznámka

Tato metoda neupravuje hodnotu aktuální instance.This method does not modify the value of the current instance. Místo toho vrátí nový řetězec, který začíná na startIndex pozici v aktuálním řetězci.Instead, it returns a new string that begins at the startIndex position in the current string.

Chcete-li extrahovat podřetězec, který začíná určitým znakem nebo sekvencí znaků, zavolejte metodu, jako je například IndexOf nebo IndexOf, aby se získala hodnota startIndex.To extract a substring that begins with a particular character or character sequence, call a method such as IndexOf or IndexOf to get the value of startIndex. Druhý příklad znázorňuje toto: extrahuje hodnotu klíče, která začíná jednu pozici znaku za znakem "=".The second example illustrates this; it extracts a key value that begins one character position after the "=" character.

Pokud je startIndex rovna nule, metoda vrátí původní řetězec beze změny.If startIndex is equal to zero, the method returns the original string unchanged.

Viz také

Substring(Int32, Int32)

Načte podřetězec z této instance.Retrieves a substring from this instance. Podřetězec začíná na zadané pozici znaku a má zadanou délku.The substring starts at a specified character position and has a specified length.

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

Parametry

startIndex
Int32

Počáteční pozice znaku v podřetězci vycházející z nuly v této instanci.The zero-based starting character position of a substring in this instance.

length
Int32

Počet znaků v podřetězci.The number of characters in the substring.

Návraty

Řetězec, který je ekvivalentní podřetězci délky length, který začíná v startIndex v této instanci, nebo Empty Pokud startIndex se rovná délce této instance a length je nula.A string that is equivalent to the substring of length length that begins at startIndex in this instance, or Empty if startIndex is equal to the length of this instance and length is zero.

Výjimky

startIndex plus length označuje pozici, která není v rámci této instance.startIndex plus length indicates a position not within this instance.

-nebo--or- startIndex nebo length je menší než nula.startIndex or length is less than zero.

Příklady

Následující příklad ilustruje jednoduché volání metody Substring(Int32, Int32), která extrahuje dva znaky z řetězce počínaje šestou pozicí znaku (tj. s indexem pět).The following example illustrates a simple call to the Substring(Int32, Int32) method that extracts two characters from a string starting at the sixth character position (that is, at index five).

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
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

Následující příklad používá metodu Substring(Int32, Int32) v následujících třech případech k izolaci podřetězců v rámci řetězce.The following example uses the Substring(Int32, Int32) method in the following three cases to isolate substrings within a string. Ve dvou případech jsou podřetězce použity v porovnání a třetí případ je vyvolána výjimka, protože jsou zadány neplatné parametry.In two cases the substrings are used in comparisons, and in the third case an exception is thrown because invalid parameters are specified.

  • Extrahuje jeden znak a třetí pozici v řetězci (na indexu 2) a porovná ho s "c".It extracts the single character and the third position in the string (at index 2) and compares it with a "c". Toto porovnání vrátí true.This comparison returns true.

  • Extrahuje nula znaků od čtvrté pozice v řetězci (u indexu 3) a předá je metodě IsNullOrEmpty.It extracts zero characters starting at the fourth position in the string (at index 3) and passes it to the IsNullOrEmpty method. To vrátí hodnotu true, protože volání metody Substring vrátí String.Empty.This returns true because the call to the Substring method returns String.Empty.

  • Pokusí se extrahovat jeden znak od čtvrté pozice v řetězci.It attempts to extract one character starting at the fourth position in the string. Vzhledem k tomu, že na této pozici není žádný znak, volání metody vyvolá výjimku ArgumentOutOfRangeException.Because there is no character at that position, the method call throws an ArgumentOutOfRangeException exception.

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
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

Následující příklad používá metodu Substring k oddělení párů klíč/hodnota, které jsou odděleny znakem rovnosti ("=").The following example uses the Substring method to separate key/value pairs that are delimited by an equals ("=") character.

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'
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'

Metoda IndexOf slouží k získání pozice znaku rovná se v řetězci.The IndexOf method is used to get the position of the equals character in the string. Volání metody Substring(Int32, Int32) extrahuje název klíče, který začíná prvním znakem v řetězci a rozšiřuje počet znaků vrácený voláním metody IndexOf.The call to the Substring(Int32, Int32) method extracts the key name, which starts from the first character in the string and extends for the number of characters returned by the call to the IndexOf method. Volání metody Substring(Int32) pak extrahuje hodnotu přiřazenou ke klíči.The call to the Substring(Int32) method then extracts the value assigned to the key. Začíná na jednu pozici znaku za znakem rovná se a rozšiřuje na konec řetězce.It starts at one character position beyond the equals character and extends to the end of the string.

Poznámky

Zavoláte metodu Substring(Int32, Int32) pro extrakci podřetězce z řetězce, který začíná na zadané pozici znaku a končí před koncem řetězce.You call the Substring(Int32, Int32) method to extract a substring from a string that begins at a specified character position and ends before the end of the string. Počáteční pozice znaku je počítána od nuly; Jinými slovy, první znak v řetězci je na indexu 0, ne index 1.The starting character position is a zero-based; in other words, the first character in the string is at index 0, not index 1. Chcete-li extrahovat podřetězec, který začíná na zadané pozici znaku a pokračuje na konec řetězce, zavolejte metodu Substring(Int32).To extract a substring that begins at a specified character position and continues to the end of the string, call the Substring(Int32) method.

Poznámka

Tato metoda neupravuje hodnotu aktuální instance.This method does not modify the value of the current instance. Místo toho vrátí nový řetězec s length znaky počínaje z pozice startIndex v aktuálním řetězci.Instead, it returns a new string with length characters starting from the startIndex position in the current string.

Parametr length představuje celkový počet znaků, které mají být z aktuální instance řetězce extrahovány.The length parameter represents the total number of characters to extract from the current string instance. To zahrnuje počáteční znak nalezený v indexu startIndex.This includes the starting character found at index startIndex. Jinými slovy, Substring metoda se pokusí extrahovat znaky z indexu startIndex do indexu startIndex + length-1.In other words, the Substring method attempts to extract characters from index startIndex to index startIndex + length - 1.

Chcete-li extrahovat podřetězec, který začíná určitým znakem nebo sekvencí znaků, zavolejte metodu, jako je například IndexOf nebo LastIndexOf, aby se získala hodnota startIndex.To extract a substring that begins with a particular character or character sequence, call a method such as IndexOf or LastIndexOf to get the value of startIndex.

Pokud podřetězec sahá z startIndex na zadanou sekvenci znaků, můžete zavolat metodu, jako je například IndexOf nebo LastIndexOf, a získat tak index koncového znaku nebo sekvence znaků.If the substring extends from startIndex to a specified character sequence, you can call a method such as IndexOf or LastIndexOf to get the index of the ending character or character sequence. Tuto hodnotu pak můžete převést na pozici indexu v řetězci následujícím způsobem:You can then convert that value to an index position in the string as follows:

  • Pokud jste hledali jeden znak, který má označovat konec podřetězce, parametr length se rovná endIndex - startIndex + 1, kde endIndex je návratovou hodnotou IndexOf nebo IndexOf metody.If you've searched for a single character that is to mark the end of the substring, the length parameter equals endIndex - startIndex + 1, where endIndex is the return value of the IndexOf or IndexOf method. Následující příklad extrahuje souvislý blok "b" znaků z řetězce.The following example extracts a continuous block of "b" characters from a string.

    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
    
    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
    
  • Pokud jste hledali více znaků, které mají označovat konec podřetězce, parametr length se rovná endIndex + endMatchLength - startIndex, kde endIndex je návratovou hodnotou IndexOf nebo IndexOf metody a endMatchLength je délka sekvence znaků, která označuje konec podřetězce.If you've searched for multiple characters that are to mark the end of the substring, the length parameter equals endIndex + endMatchLength - startIndex, where endIndex is the return value of the IndexOf or IndexOf method, and endMatchLength is the length of the character sequence that marks the end of the substring. Následující příklad extrahuje blok textu, který obsahuje <definition> element XML.The following example extracts a block of text that contains an XML <definition> element.

    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>
    
    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>
    
  • Pokud znak nebo sekvence znaků nejsou zahrnuty na konci podřetězce, parametr length se rovná endIndex - startIndex, kde endIndex je návratovou hodnotou IndexOf nebo IndexOf metody.If the character or character sequence is not included in the end of the substring, the length parameter equals endIndex - startIndex, where endIndex is the return value of the IndexOf or IndexOf method.

Pokud je startIndex rovna nule a rovná se délce aktuálního řetězce, metoda vrátí původní řetězec beze změny.If startIndex is equal to zero and equals the length of the current string, the method returns the original string unchanged.

Viz také

Platí pro