Прочитать на английском

Поделиться через


String.Substring Метод

Определение

Извлекает подстроку из данного экземпляра.

Этот член перегружен. Для получения полной информации о данном члене, включая синтаксис, использование и примеры, щелкните имя в списке перегрузок.

Перегрузки

Substring(Int32)

Извлекает подстроку из данного экземпляра. Подстрока начинается в указанном положении символов и продолжается до конца строки.

Substring(Int32, Int32)

Извлекает подстроку из данного экземпляра. Подстрока начинается с указанной позиции знака и имеет указанную длину.

Substring(Int32)

Исходный код:
String.Manipulation.cs
Исходный код:
String.Manipulation.cs
Исходный код:
String.Manipulation.cs

Извлекает подстроку из данного экземпляра. Подстрока начинается в указанном положении символов и продолжается до конца строки.

C#
public string Substring (int startIndex);

Параметры

startIndex
Int32

Отсчитываемая от нуля позиция первого знака подстроки в данном экземпляре.

Возвращаемое значение

Строка, эквивалентная подстроке, которая начинается с startIndex в данном экземпляре, или Empty, если значение startIndex равно длине данного экземпляра.

Исключения

startIndex имеет значение меньше нуля или больше длины этого экземпляра.

Примеры

В следующем примере показано получение подстроки из строки.

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

В следующем примере метод используется Substring для разделения пар "ключ-значение", разделенных символом равенства (=).

C#
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'

Метод IndexOf используется для получения позиции символа равенства в строке. Вызов Substring(Int32, Int32) метода извлекает имя ключа, которое начинается с первого символа в строке и расширяет число символов, возвращаемых вызовом IndexOf метода . Затем вызов Substring(Int32) метода извлекает значение, назначенное ключу. Он начинается с одной позиции символа за пределами символа равного и простирается до конца строки.

Комментарии

Метод вызывается Substring(Int32) для извлечения подстроки из строки, которая начинается с указанной позиции символа и заканчивается в конце строки. Начальная позиция символа отсчитывается от нуля; другими словами, первый символ в строке находится в индексе 0, а не в индексе 1. Чтобы извлечь подстроку, которая начинается с указанной позиции символа и заканчивается до конца строки, вызовите Substring(Int32, Int32) метод .

Примечание

Этот метод не изменяет значение текущего экземпляра. Вместо этого он возвращает новую строку, которая начинается с startIndex позиции в текущей строке.

Чтобы извлечь подстроку, которая начинается с определенного символа или последовательности символов, вызовите метод, например IndexOf или IndexOf , чтобы получить значение startIndex. Второй пример иллюстрирует это; Извлекает ключевое значение, которое начинается на одну позицию символа после символа = .

Если startIndex равно нулю, метод возвращает исходную строку без изменений.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Substring(Int32, Int32)

Исходный код:
String.Manipulation.cs
Исходный код:
String.Manipulation.cs
Исходный код:
String.Manipulation.cs

Извлекает подстроку из данного экземпляра. Подстрока начинается с указанной позиции знака и имеет указанную длину.

C#
public string Substring (int startIndex, int length);

Параметры

startIndex
Int32

Отсчитываемая от нуля позиция первого знака подстроки в данном экземпляре.

length
Int32

Число символов в подстроке.

Возвращаемое значение

Строка, эквивалентная подстроке длиной length, которая начинается с startIndex в данном экземпляре, или Empty, если значение startIndex равно длине данного экземпляра, а значение length равно нулю.

Исключения

startIndex плюс length указывает на позицию за пределами данного экземпляра.

-или-

Значение параметра startIndex или length меньше нуля.

Примеры

В следующем примере показан простой вызов Substring(Int32, Int32) метода , который извлекает два символа из строки, начиная с шестой позиции символа (то есть с индексом пять).

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

В следующем примере метод используется Substring(Int32, Int32) в следующих трех случаях для изоляции подстрок в строке. В двух случаях подстроки используются в сравнениях, а в третьем случае возникает исключение из-за указания недопустимых параметров.

  • Он извлекает один символ в третьей позиции строки (по индексу 2) и сравнивает его с символом "c". Это сравнение возвращает .true

  • Он извлекает нулевые символы, начиная с четвертой позиции в строке (по индексу 3), и передает их методу IsNullOrEmpty . Это возвращает значение true, так как вызов Substring метода возвращает значение String.Empty.

  • Он пытается извлечь один символ, начиная с четвертой позиции в строке. Так как в этой позиции нет символа, вызов метода вызывает ArgumentOutOfRangeException исключение.

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

В следующем примере метод используется Substring для разделения пар "ключ-значение", разделенных символом равенства (=).

C#
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'

Метод IndexOf используется для получения позиции символа равенства в строке. Вызов Substring(Int32, Int32) метода извлекает имя ключа, которое начинается с первого символа в строке и расширяет число символов, возвращаемых вызовом IndexOf метода . Затем вызов Substring(Int32) метода извлекает значение, назначенное ключу. Он начинается с одной позиции символа за пределами символа равного и простирается до конца строки.

Комментарии

Метод вызывается Substring(Int32, Int32) для извлечения подстроки из строки, которая начинается с указанной позиции символа и заканчивается до конца строки. Начальная позиция символа отсчитывается от нуля; другими словами, первый символ в строке находится в индексе 0, а не в индексе 1. Чтобы извлечь подстроку, которая начинается с указанной позиции символа и продолжается до конца строки, вызовите Substring(Int32) метод .

Примечание

Этот метод не изменяет значение текущего экземпляра. Вместо этого он возвращает новую строку с символами, начиная с lengthstartIndex позиции в текущей строке.

Параметр length представляет общее количество символов, извлекаемых из текущего экземпляра строки. Сюда входит начальный символ, найденный в индексе startIndex. Иными словами Substring , метод пытается извлечь символы из индекса startIndex в индекс startIndex + length — 1.

Чтобы извлечь подстроку, которая начинается с определенного символа или последовательности символов, вызовите метод, например IndexOf или LastIndexOf , чтобы получить значение startIndex.

Если подстрока должна расширяться с startIndex до указанной последовательности символов, можно вызвать метод, IndexOf например или , LastIndexOf чтобы получить индекс конечного символа или последовательности символов. Затем это значение можно преобразовать в позицию индекса в строке следующим образом:

  • Если вы выполнили поиск одного символа, который должен пометить конец подстроки, length параметр равен - startIndexendIndex+ 1, где endIndex — возвращаемое значение IndexOf метода или .LastIndexOf В следующем примере извлекается непрерывный блок символов "b" из строки.

    C#
    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
    
  • Если вы искали несколько символов, которые должны пометить конец подстроки, length параметр равен - endMatchLengthendIndex + startIndex , где endIndex — возвращаемое значение IndexOf метода или LastIndexOf , а endMatchLength — длина последовательности символов, которая отмечает конец подстроки. В следующем примере извлекается блок текста, содержащий XML-элемент <definition> .

    C#
    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>
    
  • Если символ или последовательность символов не включены в конец подстроки, length параметр равен endIndexstartIndex - , где endIndex — возвращаемое значение IndexOf метода или .LastIndexOf

Если startIndex равно нулю и length равно длине текущей строки, метод возвращает исходную строку без изменений.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0