String.Substring Metod

Definition

Hämtar en delsträng från den här instansen.

Den här medlemmen är överbelastad. Om du vill ha fullständig information om den här medlemmen, inklusive syntax, användning och exempel, klickar du på ett namn i överlagringslistan.

Överlagringar

Name Description
Substring(Int32)

Hämtar en delsträng från den här instansen. Delsträngen börjar vid en angiven teckenposition och fortsätter till slutet av strängen.

Substring(Int32, Int32)

Hämtar en delsträng från den här instansen. Delsträngen börjar vid en angiven teckenposition och har en angiven längd.

Substring(Int32)

Källa:
String.Manipulation.cs
Källa:
String.Manipulation.cs
Källa:
String.Manipulation.cs
Källa:
String.Manipulation.cs
Källa:
String.Manipulation.cs

Hämtar en delsträng från den här instansen. Delsträngen börjar vid en angiven teckenposition och fortsätter till slutet av strängen.

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

Parametrar

startIndex
Int32

Den nollbaserade startteckenpositionen för en delsträng i den här instansen.

Returer

En sträng som motsvarar den delsträng som börjar i den här instansen, eller startIndex om Empty den är lika med längden på startIndex den här instansen.

Undantag

startIndex är mindre än noll eller större än längden på den här instansen.

Exempel

I följande exempel visas hur du hämtar en delsträng från en sträng.

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

I följande exempel används Substring metoden för att separera nyckel/värde-par som avgränsas med ett lika med (=) tecken.

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'

Metoden IndexOf används för att hämta positionen för lika med tecknet i strängen. Anropet Substring(Int32, Int32) till metoden extraherar nyckelnamnet, som börjar från det första tecknet i strängen och utökar antalet tecken som returneras av anropet IndexOf till metoden. Anropet Substring(Int32) till metoden extraherar sedan värdet som tilldelats nyckeln. Den börjar vid en teckenposition bortom lika med tecknet och sträcker sig till slutet av strängen.

Kommentarer

Du anropar Substring(Int32) metoden för att extrahera en delsträng från en sträng som börjar vid en angiven teckenposition och slutar i slutet av strängen. Startteckenpositionen är nollbaserad. Med andra ord är det första tecknet i strängen vid index 0, inte index 1. Om du vill extrahera en delsträng som börjar vid en angiven teckenposition och slutar före slutet av strängen anropar Substring(Int32, Int32) du metoden.

Note

Den här metoden ändrar inte värdet för den aktuella instansen. I stället returneras en ny sträng som börjar vid startIndex positionen i den aktuella strängen.

Om du vill extrahera en delsträng som börjar med ett visst tecken eller en viss teckensekvens anropar du en metod som IndexOf eller IndexOf för att hämta värdet startIndexför . Det andra exemplet illustrerar detta. det extraherar ett nyckelvärde som börjar en teckenposition efter = tecknet.

Om startIndex är lika med noll returnerar metoden den ursprungliga strängen oförändrad.

Se även

Gäller för

Substring(Int32, Int32)

Källa:
String.Manipulation.cs
Källa:
String.Manipulation.cs
Källa:
String.Manipulation.cs
Källa:
String.Manipulation.cs
Källa:
String.Manipulation.cs

Hämtar en delsträng från den här instansen. Delsträngen börjar vid en angiven teckenposition och har en angiven längd.

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

Parametrar

startIndex
Int32

Den nollbaserade startteckenpositionen för en delsträng i den här instansen.

length
Int32

Antalet tecken i understrängen.

Returer

En sträng som motsvarar den delsträng av längd length som börjar vid startIndex i den här instansen, eller Empty om startIndex är lika med längden på den här instansen och length är noll.

Undantag

startIndex plus length anger en position som inte finns i den här instansen.

-eller-

startIndex eller length är mindre än noll.

Exempel

I följande exempel visas ett enkelt anrop till Substring(Int32, Int32) metoden som extraherar två tecken från en sträng med början vid den sjätte teckenpositionen (det vill säga vid index fem).

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

I följande exempel används Substring(Int32, Int32) metoden i följande tre fall för att isolera delsträngar i en sträng. I två fall används delsträngarna i jämförelser och i det tredje fallet utlöses ett undantag eftersom ogiltiga parametrar har angetts.

  • Det extraherar det enskilda tecknet på den tredje positionen i strängen (vid index 2) och jämför det med ett "c". Den här jämförelsen returnerar true.

  • Den extraherar noll tecken från och med den fjärde positionen i strängen (vid index 3) och skickar det till IsNullOrEmpty metoden. Detta returnerar true eftersom anropet Substring till metoden returnerar String.Empty.

  • Den försöker extrahera ett tecken från och med den fjärde positionen i strängen. Eftersom det inte finns något tecken på den positionen utlöser metodanropet ett ArgumentOutOfRangeException undantag.

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

I följande exempel används Substring metoden för att separera nyckel/värde-par som avgränsas med ett lika med (=) tecken.

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'

Metoden IndexOf används för att hämta positionen för lika med tecknet i strängen. Anropet Substring(Int32, Int32) till metoden extraherar nyckelnamnet, som börjar från det första tecknet i strängen och utökar antalet tecken som returneras av anropet IndexOf till metoden. Anropet Substring(Int32) till metoden extraherar sedan värdet som tilldelats nyckeln. Den börjar vid en teckenposition bortom lika med tecknet och sträcker sig till slutet av strängen.

Kommentarer

Du anropar Substring(Int32, Int32) metoden för att extrahera en delsträng från en sträng som börjar vid en angiven teckenposition och slutar före slutet av strängen. Startteckenpositionen är nollbaserad. Med andra ord är det första tecknet i strängen vid index 0, inte index 1. Om du vill extrahera en delsträng som börjar vid en angiven teckenposition och fortsätter till slutet av strängen anropar Substring(Int32) du metoden.

Note

Den här metoden ändrar inte värdet för den aktuella instansen. I stället returneras en ny sträng med length tecken som börjar från startIndex positionen i den aktuella strängen.

Parametern length representerar det totala antalet tecken som ska extraheras från den aktuella stränginstansen. Detta inkluderar starttecknet som hittades vid indexet startIndex. Med andra ord Substring försöker metoden extrahera tecken från index startIndex till index startIndex + length – 1.

Om du vill extrahera en delsträng som börjar med ett visst tecken eller en viss teckensekvens anropar du en metod som IndexOf eller LastIndexOf för att hämta värdet startIndexför .

Om delsträngen ska sträcka sig från startIndex till en angiven teckensekvens kan du anropa en metod som IndexOf eller LastIndexOf för att hämta indexet för sluttecknet eller teckensekvensen. Du kan sedan konvertera det värdet till en indexposition i strängen enligt följande:

  • Om du har sökt efter ett enda tecken som ska markera slutet på delsträngen är parametern length lika endIndex - startIndexmed + 1, där endIndex är returvärdet för IndexOf metoden eller .LastIndexOf I följande exempel extraheras ett kontinuerligt block med "b"-tecken från en sträng.

    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
    
  • Om du har sökt efter flera tecken som ska markera slutet av delsträngen är parametern length lika medendIndex + endMatchLength - startIndex , där endIndex är returvärdet IndexOf för metoden eller LastIndexOf och endMatchLength är längden på teckensekvensen som markerar slutet på delsträngen. I följande exempel extraheras ett textblock som innehåller ett XML-element <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>
    
  • Om tecken- eller teckensekvensen inte ingår i slutet av delsträngen är parametern length lika med endIndex - startIndex, där endIndex är returvärdet för IndexOf metoden eller .LastIndexOf

Om startIndex är lika med noll och length är lika med längden på den aktuella strängen returnerar metoden den ursprungliga strängen oförändrad.

Se även

Gäller för