Compartir a través de


String.Substring Método

Definición

Recupera una subcadena de la instancia.

Este miembro está sobrecargado. Para obtener información completa sobre este miembro, incluida la sintaxis, el uso y algunos ejemplos, haga clic en un nombre de la lista de sobrecarga.

Sobrecargas

Substring(Int32)

Recupera una subcadena de la instancia. La subcadena empieza en una posición de caracteres especificada y continúa hasta el final de la cadena.

Substring(Int32, Int32)

Recupera una subcadena de la instancia. La subcadena comienza en una posición de carácter especificada y tiene una longitud especificada.

Substring(Int32)

Source:
String.Manipulation.cs
Source:
String.Manipulation.cs
Source:
String.Manipulation.cs

Recupera una subcadena de la instancia. La subcadena empieza en una posición de caracteres especificada y continúa hasta el final de la cadena.

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

Posición de carácter inicial de base cero de una subcadena en la instancia.

Devoluciones

Cadena equivalente a la subcadena que comienza en el valor de startIndex de esta instancia, o bien, Empty si el valor de startIndex es igual a la longitud de esta instancia.

Excepciones

startIndex es menor que cero o mayor que la longitud de esta instancia.

Ejemplos

En el ejemplo siguiente se muestra cómo obtener una subcadena de una cadena.

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

En el ejemplo siguiente se usa el Substring método para separar pares clave-valor delimitados por un carácter igual (=).

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'

El IndexOf método se usa para obtener la posición del carácter igual en la cadena. La llamada al Substring(Int32, Int32) método extrae el nombre de clave, que comienza desde el primer carácter de la cadena y se extiende para el número de caracteres devueltos por la llamada al IndexOf método . A continuación, la Substring(Int32) llamada al método extrae el valor asignado a la clave. Comienza en una posición de carácter más allá del carácter igual y se extiende hasta el final de la cadena.

Comentarios

Se llama al Substring(Int32) método para extraer una subcadena de una cadena que comienza en una posición de carácter especificada y termina al final de la cadena. La posición del carácter inicial es de base cero; es decir, el primer carácter de la cadena está en el índice 0, no en el índice 1. Para extraer una subcadena que comienza en una posición de carácter especificada y termina antes del final de la cadena, llame al Substring(Int32, Int32) método .

Nota

Este método no modifica el valor de la instancia actual. En su lugar, devuelve una nueva cadena que comienza en la startIndex posición de la cadena actual.

Para extraer una subcadena que comienza con un carácter o secuencia de caracteres determinado, llame a un método como IndexOf o IndexOf para obtener el valor de startIndex. En el segundo ejemplo se ilustra esto; extrae un valor de clave que comienza una posición de carácter después del = carácter.

Si startIndex es igual a cero, el método devuelve la cadena original sin cambios.

Consulte también

Se aplica a

Substring(Int32, Int32)

Source:
String.Manipulation.cs
Source:
String.Manipulation.cs
Source:
String.Manipulation.cs

Recupera una subcadena de la instancia. La subcadena comienza en una posición de carácter especificada y tiene una longitud especificada.

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

Posición de carácter inicial de base cero de una subcadena en la instancia.

length
Int32

Número de caracteres de la subcadena.

Devoluciones

Cadena equivalente a la subcadena de longitud de length que comienza en el valor de startIndex de esta instancia, o bien, Empty si el valor de startIndex es igual a la longitud de esta instancia y el valor de length es cero.

Excepciones

startIndex más length indica una posición fuera de esta instancia.

o bien

startIndex o length es menor que cero.

Ejemplos

En el ejemplo siguiente se muestra una llamada simple al Substring(Int32, Int32) método que extrae dos caracteres de una cadena a partir de la sexta posición de carácter (es decir, en el í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

En el ejemplo siguiente se usa el Substring(Int32, Int32) método en los tres casos siguientes para aislar subcadenas dentro de una cadena. En dos casos, las subcadenas se usan en comparaciones y, en el tercer caso, se produce una excepción porque se especifican parámetros no válidos.

  • Extrae el carácter único en la tercera posición de la cadena (en el índice 2) y lo compara con un "c". Esta comparación devuelve true.

  • Extrae cero caracteres comenzando en la cuarta posición de la cadena (en el índice 3) y lo pasa al IsNullOrEmpty método . Esto devuelve true porque la llamada al Substring método devuelve String.Empty.

  • Intenta extraer un carácter a partir de la cuarta posición de la cadena. Dado que no hay ningún carácter en esa posición, la llamada al método produce una ArgumentOutOfRangeException excepción.

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

En el ejemplo siguiente se usa el Substring método para separar pares clave-valor delimitados por un carácter igual (=).

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'

El IndexOf método se usa para obtener la posición del carácter igual en la cadena. La llamada al Substring(Int32, Int32) método extrae el nombre de clave, que comienza desde el primer carácter de la cadena y se extiende para el número de caracteres devueltos por la llamada al IndexOf método . A continuación, la Substring(Int32) llamada al método extrae el valor asignado a la clave. Comienza en una posición de carácter más allá del carácter igual y se extiende hasta el final de la cadena.

Comentarios

Se llama al Substring(Int32, Int32) método para extraer una subcadena de una cadena que comienza en una posición de carácter especificada y termina antes del final de la cadena. La posición del carácter inicial es de base cero; es decir, el primer carácter de la cadena está en el índice 0, no en el índice 1. Para extraer una subcadena que comienza en una posición de carácter especificada y continúa hasta el final de la cadena, llame al Substring(Int32) método .

Nota

Este método no modifica el valor de la instancia actual. En su lugar, devuelve una nueva cadena con length caracteres a partir de la startIndex posición de la cadena actual.

El length parámetro representa el número total de caracteres que se van a extraer de la instancia de cadena actual. Esto incluye el carácter inicial que se encuentra en el índice startIndex. En otras palabras, el Substring método intenta extraer caracteres del índice startIndex al índice startIndex + length - 1.

Para extraer una subcadena que comienza con un carácter o secuencia de caracteres determinado, llame a un método como IndexOf o LastIndexOf para obtener el valor de startIndex.

Si la subcadena debe extenderse de startIndex a una secuencia de caracteres especificada, puede llamar a un método como IndexOf o LastIndexOf para obtener el índice del carácter final o la secuencia de caracteres. Después, puede convertir ese valor en una posición de índice en la cadena como se indica a continuación:

  • Si ha buscado un solo carácter que marque el final de la subcadena, el length parámetro es igual a - startIndexendIndex+ 1, donde endIndex es el valor devuelto del IndexOf método o .LastIndexOf En el ejemplo siguiente se extrae un bloque continuo de caracteres "b" de una cadena.

    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
    
  • Si ha buscado varios caracteres que van a marcar el final de la subcadena, el length parámetro es igual - + startIndexendIndexendMatchLength a , donde endIndex es el valor devuelto del IndexOf método o LastIndexOf y endMatchLength es la longitud de la secuencia de caracteres que marca el final de la subcadena. En el ejemplo siguiente se extrae un bloque de texto que contiene un 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>
    
  • Si el carácter o la secuencia de caracteres no se incluye al final de la subcadena, el length parámetro es igual endIndex - startIndexa , donde endIndex es el valor devuelto del IndexOf método o .LastIndexOf

Si startIndex es igual a cero y length es igual a la longitud de la cadena actual, el método devuelve la cadena original sin cambios.

Consulte también

Se aplica a