Compartilhar via


String.Substring Método

Definição

Recupera uma subcadeia de caracteres desta instância.

Esse membro está sobrecarregado. Para informação completa sobre esse membro, incluindo sintaxe, uso e exemplos, clique em um nome na lista de sobrecargas.

Sobrecargas

Substring(Int32)

Recupera uma subcadeia de caracteres desta instância. A subcadeia de caracteres começa em uma posição de caractere especificado e continua até o final da cadeia de caracteres.

Substring(Int32, Int32)

Recupera uma subcadeia de caracteres desta instância. A subcadeia de caracteres começa em uma posição de caractere especificado e tem um comprimento especificado.

Substring(Int32)

Origem:
String.Manipulation.cs
Origem:
String.Manipulation.cs
Origem:
String.Manipulation.cs

Recupera uma subcadeia de caracteres desta instância. A subcadeia de caracteres começa em uma posição de caractere especificado e continua até o final da cadeia de caracteres.

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

Parâmetros

startIndex
Int32

A posição de caractere de início de base zero de uma subcadeia de caracteres nesta instância.

Retornos

Uma cadeia de caracteres equivalente à subcadeia de caracteres que começa em startIndex nessa instância, ou Empty, se startIndex for igual ao comprimento dessa instância.

Exceções

startIndex for menor que zero ou maior que o comprimento dessa instância.

Exemplos

O exemplo a seguir demonstra a obtenção de uma subcadeia de caracteres de uma cadeia de caracteres.

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

O exemplo a seguir usa o Substring método para separar pares chave/valor delimitados por um caractere igual a (=).

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'

O IndexOf método é usado para obter a posição do caractere igual a na cadeia de caracteres. A chamada para o Substring(Int32, Int32) método extrai o nome da chave, que começa do primeiro caractere na cadeia de caracteres e se estende para o número de caracteres retornados pela chamada para o IndexOf método . Em seguida, a chamada para o Substring(Int32) método extrai o valor atribuído à chave. Ele começa em uma posição de caractere além do caractere igual e se estende até o final da cadeia de caracteres.

Comentários

Você chama o Substring(Int32) método para extrair uma subcadeia de caracteres de uma cadeia de caracteres que começa em uma posição de caractere especificada e termina no final da cadeia de caracteres. A posição do caractere inicial é baseada em zero; em outras palavras, o primeiro caractere na cadeia de caracteres está no índice 0, não no índice 1. Para extrair uma subcadeia de caracteres que começa em uma posição de caractere especificada e termina antes do final da cadeia de caracteres, chame o Substring(Int32, Int32) método .

Observação

Este método não altera o valor da instância atual. Em vez disso, ele retorna uma nova cadeia de caracteres que começa na startIndex posição na cadeia de caracteres atual.

Para extrair uma subcadeia de caracteres que começa com um caractere ou sequência de caracteres específico, chame um método como IndexOf ou IndexOf para obter o valor de startIndex. O segundo exemplo ilustra isso; ele extrai um valor de chave que começa uma posição de caractere após o = caractere.

Se startIndex for igual a zero, o método retornará a cadeia de caracteres original inalterada.

Confira também

Aplica-se a

Substring(Int32, Int32)

Origem:
String.Manipulation.cs
Origem:
String.Manipulation.cs
Origem:
String.Manipulation.cs

Recupera uma subcadeia de caracteres desta instância. A subcadeia de caracteres começa em uma posição de caractere especificado e tem um comprimento especificado.

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

Parâmetros

startIndex
Int32

A posição de caractere de início de base zero de uma subcadeia de caracteres nesta instância.

length
Int32

O número de caracteres na subcadeia de caracteres.

Retornos

Uma cadeia de caracteres é equivalente à subcadeia de caracteres de comprimento length que começa em startIndex nessa instância, ou Empty, se startIndex for igual ao comprimento dessa instância e length for zero.

Exceções

A soma de startIndex e length indica uma posição que não está dentro dessa instância.

- ou -

startIndex ou length é menor que zero.

Exemplos

O exemplo a seguir ilustra uma chamada simples para o Substring(Int32, Int32) método que extrai dois caracteres de uma cadeia de caracteres começando na sexta posição de caractere (ou seja, no índice cinco).

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

O exemplo a seguir usa o Substring(Int32, Int32) método nos três casos a seguir para isolar subcadeias de caracteres dentro de uma cadeia de caracteres. Em dois casos, as subcadeias de caracteres são usadas em comparações e, no terceiro caso, uma exceção é gerada porque parâmetros inválidos são especificados.

  • Ele extrai o caractere único na terceira posição na cadeia de caracteres (no índice 2) e o compara com um "c". Essa comparação retorna true.

  • Ele extrai zero caracteres começando na quarta posição na cadeia de caracteres (no índice 3) e passa para o IsNullOrEmpty método . Isso retorna true porque a chamada para o Substring método retorna String.Empty.

  • Ele tenta extrair um caractere começando na quarta posição na cadeia de caracteres. Como não há nenhum caractere nessa posição, a chamada de método gera uma exceção ArgumentOutOfRangeException .

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

O exemplo a seguir usa o Substring método para separar pares chave/valor delimitados por um caractere igual a (=).

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'

O IndexOf método é usado para obter a posição do caractere igual a na cadeia de caracteres. A chamada para o Substring(Int32, Int32) método extrai o nome da chave, que começa do primeiro caractere na cadeia de caracteres e se estende para o número de caracteres retornados pela chamada para o IndexOf método . Em seguida, a chamada para o Substring(Int32) método extrai o valor atribuído à chave. Ele começa em uma posição de caractere além do caractere igual e se estende até o final da cadeia de caracteres.

Comentários

Você chama o Substring(Int32, Int32) método para extrair uma subcadeia de caracteres de uma cadeia de caracteres que começa em uma posição de caractere especificada e termina antes do final da cadeia de caracteres. A posição do caractere inicial é baseada em zero; em outras palavras, o primeiro caractere na cadeia de caracteres está no índice 0, não no índice 1. Para extrair uma subcadeia de caracteres que começa em uma posição de caractere especificada e continua até o final da cadeia de caracteres, chame o Substring(Int32) método .

Observação

Este método não altera o valor da instância atual. Em vez disso, ele retorna uma nova cadeia de caracteres com length caracteres começando da startIndex posição na cadeia de caracteres atual.

O length parâmetro representa o número total de caracteres a serem extraídos da instância de cadeia de caracteres atual. Isso inclui o caractere inicial encontrado no índice startIndex. Em outras palavras, o Substring método tenta extrair caracteres do índice startIndex para o índice startIndex + length - 1.

Para extrair uma subcadeia de caracteres que começa com um caractere ou sequência de caracteres específico, chame um método como IndexOf ou LastIndexOf para obter o valor de startIndex.

Se a subcadeia de caracteres deve se estender de startIndex para uma sequência de caracteres especificada, você pode chamar um método como IndexOf ou LastIndexOf para obter o índice do caractere final ou sequência de caracteres. Em seguida, você pode converter esse valor em uma posição de índice na cadeia de caracteres da seguinte maneira:

  • Se você pesquisou um único caractere para marcar o final da subcadeia de caracteresstartIndexendIndex - , o parâmetro será igual a length + 1, em endIndex que é o valor retornado do IndexOf método ou .LastIndexOf O exemplo a seguir extrai um bloco contínuo de caracteres "b" de uma cadeia de caracteres.

    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
    
  • Se você pesquisou vários caracteres que devem marcar o final da subcadeia de caracteres, o length parâmetro é igual a , em que endIndex é o valor retornado do IndexOf método ou LastIndexOf e endMatchLength é o comprimento da sequência de caracteresstartIndexendIndex + endMatchLength - que marca o final da subcadeia de caracteres. O exemplo a seguir extrai um bloco de texto que contém um elemento XML <definition> .

    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>
    
  • Se o caractere ou a sequência de caracteres não estiver incluído no final da subcadeia de caracteres - startIndexendIndex, o length parâmetro será igual a , em que endIndex é o valor retornado do IndexOf método ou .LastIndexOf

Se startIndex for igual a zero e length for igual ao comprimento da cadeia de caracteres atual, o método retornará a cadeia de caracteres original inalterada.

Confira também

Aplica-se a