String.Substring Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Извлекает подстроку из данного экземпляра.
Этот член перегружен. Для получения полной информации о данном члене, включая синтаксис, использование и примеры, щелкните имя в списке перегрузок.
Перегрузки
Substring(Int32) |
Извлекает подстроку из данного экземпляра. Подстрока начинается в указанном положении символов и продолжается до конца строки. |
Substring(Int32, Int32) |
Извлекает подстроку из данного экземпляра. Подстрока начинается с указанной позиции знака и имеет указанную длину. |
Substring(Int32)
Извлекает подстроку из данного экземпляра. Подстрока начинается в указанном положении символов и продолжается до конца строки.
public:
System::String ^ Substring(int startIndex);
public string Substring (int startIndex);
member this.Substring : int -> string
Public Function Substring (startIndex As Integer) As String
Параметры
- startIndex
- Int32
Отсчитываемая от нуля позиция первого знака подстроки в данном экземпляре.
Возвращаемое значение
Строка, эквивалентная подстроке, которая начинается с startIndex
в данном экземпляре, или Empty, если значение startIndex
равно длине данного экземпляра.
Исключения
startIndex
имеет значение меньше нуля или больше длины этого экземпляра.
Примеры
В следующем примере показано получение подстроки из строки.
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
В следующем примере метод используется Substring для разделения пар "ключ-значение", разделенных символом равенства ("=").
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'
IndexOfМетод используется для получения позиции знака равенства в строке. Вызов Substring(Int32, Int32) метода извлекает имя ключа, которое начинается с первого символа в строке и расширяется для количества символов, возвращаемых при вызове IndexOf метода. Substring(Int32)Затем вызов метода извлекает значение, присвоенное ключу. Он начинается с одной позиции символа за знаком равенства и расширяется до конца строки.
Комментарии
Метод вызывается Substring(Int32) для извлечения подстроки из строки, которая начинается с указанной позиции символа и заканчивается в конце строки. Начальная позиции символа начинается с нуля; Иными словами, первый символ в строке находится по индексу 0, а не к индексу 1. Чтобы извлечь подстроку, которая начинается с указанной позиции символа и заканчивается до конца строки, вызовите Substring(Int32, Int32) метод.
Примечание
Этот метод не изменяет значение текущего экземпляра. Вместо этого он возвращает новую строку, которая начинается с startIndex
позиции в текущей строке.
Чтобы извлечь подстроку, которая начинается с определенного символа или последовательности символов, вызовите метод, например IndexOf или, IndexOf чтобы получить значение startIndex
. Во втором примере это показано. Он извлекает значение ключа, которое начинается с одной позиции символа после символа "=".
Если равен startIndex
нулю, метод возвращает исходную строку без изменений.
См. также раздел
- Int32
- Concat(Object)
- Insert(Int32, String)
- Join(String, String[])
- Remove(Int32, Int32)
- Replace(Char, Char)
- Split(Char[])
- Trim(Char[])
Применяется к
Substring(Int32, Int32)
Извлекает подстроку из данного экземпляра. Подстрока начинается с указанной позиции знака и имеет указанную длину.
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
Параметры
- startIndex
- Int32
Отсчитываемая от нуля позиция первого знака подстроки в данном экземпляре.
- length
- Int32
Число символов в подстроке.
Возвращаемое значение
Строка, эквивалентная подстроке длиной length
, которая начинается с startIndex
в данном экземпляре, или Empty, если значение startIndex
равно длине данного экземпляра, а значение length
равно нулю.
Исключения
startIndex
плюс length
указывает на позицию за пределами данного экземпляра.
-или-
Значение параметра startIndex
или length
меньше нуля.
Примеры
В следующем примере показан простой вызов Substring(Int32, Int32) метода, который извлекает два символа из строки, начиная с шестой позиции символа (т. е. по индексу 5).
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
В следующем примере метод используется Substring(Int32, Int32) в следующих трех случаях для изоляции подстрок в строке. В двух случаях подстроки используются в сравнениях, а в третьем случае возникает исключение, так как указаны недопустимые параметры.
Он извлекает один и третий позиции в строке (с индексом 2) и сравнивает его с символом "c". Это сравнение возвращает
true
.Он извлекает ноль символов, начиная с четвертой позиции в строке (с индексом 3) и передает ее IsNullOrEmpty методу. Это возвращает значение true, поскольку вызов Substring метода возвращает String.Empty .
Он пытается извлечь один символ, начиная с четвертой позиции в строке. Так как в этой позиции нет символа, вызов метода создает 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
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
В следующем примере метод используется Substring для разделения пар "ключ-значение", разделенных символом равенства ("=").
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'
IndexOfМетод используется для получения позиции знака равенства в строке. Вызов Substring(Int32, Int32) метода извлекает имя ключа, которое начинается с первого символа в строке и расширяется для количества символов, возвращаемых при вызове IndexOf метода. Substring(Int32)Затем вызов метода извлекает значение, присвоенное ключу. Он начинается с одной позиции символа за знаком равенства и расширяется до конца строки.
Комментарии
Метод вызывается Substring(Int32, Int32) для извлечения подстроки из строки, которая начинается с указанной позиции символа и заканчивается до конца строки. Начальная позиции символа начинается с нуля; Иными словами, первый символ в строке находится по индексу 0, а не к индексу 1. Чтобы извлечь подстроку, которая начинается с указанной позиции символа и продолжается до конца строки, вызовите Substring(Int32) метод.
Примечание
Этот метод не изменяет значение текущего экземпляра. Вместо этого он возвращает новую строку с length
символами, начиная с startIndex
положения в текущей строке.
length
Параметр представляет общее число символов, извлекаемых из текущего экземпляра строки. Сюда входит начальный символ, найденный по индексу startIndex
. Иными словами, Substring метод пытается извлечь символы из индекса startIndex
в индекс startIndex
+ length
-1.
Чтобы извлечь подстроку, которая начинается с определенного символа или последовательности символов, вызовите метод, например IndexOf или, LastIndexOf чтобы получить значение startIndex
.
Если подстрока расширяется startIndex
до указанной последовательности символов, можно вызвать метод, например IndexOf или, LastIndexOf чтобы получить индекс конечного символа или последовательности символов. Затем это значение можно преобразовать в индекс в строке следующим образом:
Если вы искали один символ, который должен помечать конец подстроки,
length
параметр равенendIndex
-startIndex
+ 1, гдеendIndex
— возвращаемое значение IndexOf IndexOf метода или. В следующем примере извлекается непрерывный блок символов "b" из строки.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
Если вы искали несколько символов, которые помечают конец подстроки,
length
параметр равенendIndex
+endMatchLength
-startIndex
, гдеendIndex
— возвращаемое значение IndexOf IndexOf метода или, аendMatchLength
— Длина последовательности символов, которая отмечает конец подстроки. В следующем примере извлекается блок текста, содержащий<definition>
элемент XML.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>
Если символ или последовательность символов не включена в конец подстроки,
length
параметр равенendIndex
-startIndex
, гдеendIndex
— возвращаемое значение IndexOf IndexOf метода или.
Если startIndex
значение равно нулю и равно длине текущей строки, метод возвращает исходную строку без изменений.