String.Substring Yöntem

Tanım

Bu örnekten bir alt dize alır.

Bu üye aşırı yüklendi. Sözdizimi, kullanım ve örnekleri dahil olmak üzere bu üyeyle ilgili eksiksiz bilgi için aşırı yükleme listesindeki ada tıklayın.

Aşırı Yüklemeler

Substring(Int32)

Bu örnekten bir alt dize alır. Alt dize belirtilen karakter konumunda başlar ve dizenin sonuna kadar devam eder.

Substring(Int32, Int32)

Bu örnekten bir alt dize alır. Alt dize belirtilen karakter konumunda başlar ve belirtilen uzunluktadır.

Substring(Int32)

Bu örnekten bir alt dize alır. Alt dize belirtilen karakter konumunda başlar ve dizenin sonuna kadar devam eder.

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

Parametreler

startIndex
Int32

Bu örnekteki bir alt dizenin sıfır tabanlı başlangıç karakteri konumu.

Döndürülenler

Bu örnekte başlayan startIndex alt dizeye eşdeğer olan veya Empty bu örneğin uzunluğuna eşit olan startIndex bir dize.

Özel durumlar

startIndex sıfırdan küçük veya bu örneğin uzunluğundan büyük.

Örnekler

Aşağıdaki örnekte bir dizeden alt dize alma işlemi gösterilmektedir.

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

Aşağıdaki örnek, eşittir (=) karakteriyle sınırlandırılmış anahtar/değer çiftlerini ayırmak için yöntemini kullanırSubstring.

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'

IndexOf yöntemi, dizedeki eşittir karakterinin konumunu almak için kullanılır. yöntemine yapılan Substring(Int32, Int32) çağrı, dizedeki ilk karakterden başlayan ve yöntemine yapılan çağrı IndexOf tarafından döndürülen karakter sayısı için genişletilen anahtar adını ayıklar. Yöntemine yapılan Substring(Int32) çağrı daha sonra anahtara atanan değeri ayıklar. Eşittir karakterinin ötesinde bir karakter konumunda başlar ve dizenin sonuna kadar uzanır.

Açıklamalar

Belirtilen karakter konumunda başlayan ve dizenin Substring(Int32) sonunda biten bir dizeden bir alt dize ayıklamak için yöntemini çağırırsınız. Başlangıç karakteri konumu sıfır tabanlıdır; başka bir deyişle, dizedeki ilk karakter dizin 1'de değil, dizin 0'dadır. Belirtilen karakter konumunda başlayan ve dizenin sonundan önce biten bir alt dizeyi ayıklamak için yöntemini çağırın Substring(Int32, Int32) .

Not

Bu yöntem, geçerli örneğin değerini değiştirmez. Bunun yerine, geçerli dizenin startIndex konumundan başlayan yeni bir dize döndürür.

Belirli bir karakter veya karakter dizisiyle başlayan bir alt dizeyi ayıklamak için veya IndexOf gibi IndexOf bir yöntemi çağırarak değerini startIndexalın. İkinci örnekte bu gösterilmektedir; karakterden sonra = bir karakter konumuna başlayan bir anahtar değeri ayıklar.

sıfıra eşitse startIndex , yöntemi özgün dizeyi değiştirmeden döndürür.

Ayrıca bkz.

Şunlara uygulanır

Substring(Int32, Int32)

Bu örnekten bir alt dize alır. Alt dize belirtilen karakter konumunda başlar ve belirtilen uzunluktadır.

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

Parametreler

startIndex
Int32

Bu örnekteki bir alt dizenin sıfır tabanlı başlangıç karakteri konumu.

length
Int32

Alt dizedeki karakter sayısı.

Döndürülenler

Bu örnekte başlayan uzunluk length alt dizesine eşdeğer veya Empty bu örneğin uzunluğuna eşitse startIndex ve length sıfır ise bir startIndex dize.

Özel durumlar

startIndex artı length , bu örnek içinde olmayan bir konumu gösterir.

-veya-

startIndex veya length sıfırdan küçüktür.

Örnekler

Aşağıdaki örnekte, altıncı karakter konumundan Substring(Int32, Int32) (dizin beşte) başlayarak bir dizeden iki karakter ayıklayan yönteme yapılan basit bir çağrı gösterilmektedir.

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

Aşağıdaki örnekte, bir dize içindeki alt dizeleri yalıtmak için aşağıdaki üç durumda yöntemini kullanır Substring(Int32, Int32) . İki durumda alt dizeler karşılaştırmalarda kullanılır ve üçüncü durumda geçersiz parametreler belirtildiğinden bir özel durum oluşturulur.

  • Dizenin üçüncü konumundaki (dizin 2'de) tek karakteri ayıklar ve bir "c" ile karşılaştırır. Bu karşılaştırma döndürür true.

  • Dizenin dördüncü konumundan (dizin 3'te) başlayarak sıfır karakteri ayıklar ve yöntemine IsNullOrEmpty geçirir. Yöntemine yapılan çağrı döndürdüğünden Substring bu true döndürür String.Empty.

  • Dizenin dördüncü konumundan başlayarak bir karakteri ayıklamaya çalışır. Bu konumda karakter olmadığından, yöntem çağrısı bir ArgumentOutOfRangeException özel durum oluşturur.

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

Aşağıdaki örnek, eşittir (=) karakteriyle sınırlandırılmış anahtar/değer çiftlerini ayırmak için yöntemini kullanırSubstring.

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'

IndexOf yöntemi, dizedeki eşittir karakterinin konumunu almak için kullanılır. yöntemine yapılan Substring(Int32, Int32) çağrı, dizedeki ilk karakterden başlayan ve yöntemine yapılan çağrı IndexOf tarafından döndürülen karakter sayısı için genişletilen anahtar adını ayıklar. Yöntemine yapılan Substring(Int32) çağrı daha sonra anahtara atanan değeri ayıklar. Eşittir karakterinin ötesinde bir karakter konumunda başlar ve dizenin sonuna kadar uzanır.

Açıklamalar

Belirtilen karakter konumundan başlayıp dizenin Substring(Int32, Int32) sonundan önce biten bir dizeden alt dize ayıklamak için yöntemini çağırırsınız. Başlangıç karakteri konumu sıfır tabanlıdır; başka bir deyişle, dizedeki ilk karakter dizin 1'de değil, dizin 0'dadır. Belirtilen karakter konumunda başlayan ve dizenin sonuna kadar devam eden bir alt dizeyi ayıklamak için yöntemini çağırın Substring(Int32) .

Not

Bu yöntem, geçerli örneğin değerini değiştirmez. Bunun yerine, geçerli dizedeki konumdan startIndex başlayan karakterler içeren length yeni bir dize döndürür.

parametresi, length geçerli dize örneğinden ayıklanması gereken toplam karakter sayısını temsil eder. Bu, dizininde startIndexbulunan başlangıç karakterini içerir. Başka bir deyişle, Substring yöntemi dizinden dizine startIndex karakter ayıklamayı startIndex + length dener - 1.

Belirli bir karakter veya karakter dizisiyle başlayan bir alt dizeyi ayıklamak için veya LastIndexOf gibi IndexOf bir yöntemi çağırarak değerini startIndexalın.

Alt dizeden startIndex belirtilen karakter dizisine genişletilmesi gerekiyorsa, bitiş karakterinin veya karakter dizisinin dizinini almak için veya LastIndexOf gibi IndexOf bir yöntemi çağırabilirsiniz. Ardından bu değeri dizede aşağıdaki gibi bir dizin konumuna dönüştürebilirsiniz:

  • Alt dizenin sonunu işaretlemek için tek bir karakter aradıysanız, length parametresi + 1'e eşittirendIndexstartIndex - ; burada endIndex or LastIndexOf yönteminin IndexOf dönüş değeridir. Aşağıdaki örnek, bir dizeden sürekli bir "b" karakter bloğu ayıklar.

    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
    
  • Alt dizenin sonunu işaretlemek için birden çok karakter aradıysanız parametresi eşittirendMatchLengthstartIndex + - endIndex, length burada endIndex veya LastIndexOf yönteminin IndexOf dönüş değeridir ve endMatchLength alt dizenin sonunu işaretleyen karakter dizisinin uzunluğudur. Aşağıdaki örnek, XML <definition> öğesi içeren bir metin bloğunu ayıklar.

    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>
    
  • Karakter veya karakter dizisi alt dizenin sonuna dahil edilmediyse, length parametresi eşittirendIndexstartIndex - ; burada endIndex veya LastIndexOf yönteminin IndexOf dönüş değeridir.

Sıfıra eşitse ve length geçerli dizenin uzunluğuna eşitsestartIndex, yöntemi özgün dizeyi değiştirmeden döndürür.

Ayrıca bkz.

Şunlara uygulanır