String.LastIndexOf Метод

Определение

Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанного символа Юникода или строки в пределах данного экземпляра.Reports the zero-based index position of the last occurrence of a specified Unicode character or string within this instance. Метод возвращает -1, если знак или строка не найдена в данном экземпляре.The method returns -1 if the character or string is not found in this instance.

Перегрузки

LastIndexOf(String, Int32, StringComparison)

Возвращает индекс с отсчетом от нуля последнего вхождения указанной строки в текущем объекте String.Reports the zero-based index of the last occurrence of a specified string within the current String object. Поиск начинается с указанной позиции символа и выполняется в обратном направлении до начала строки.The search starts at a specified character position and proceeds backward toward the beginning of the string. Параметр определяет тип сравнения для выполнения во время поиска заданной строки.A parameter specifies the type of comparison to perform when searching for the specified string.

LastIndexOf(String, Int32, Int32)

Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанной строки в данном экземпляре.Reports the zero-based index position of the last occurrence of a specified string within this instance. Поиск начинается с указанной позиции символа и выполняется в обратном направлении до начала строки для заданного числа позиций символов.The search starts at a specified character position and proceeds backward toward the beginning of the string for a specified number of character positions.

LastIndexOf(Char, Int32, Int32)

Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанного символа Юникода в подстроке в пределах данного экземпляра.Reports the zero-based index position of the last occurrence of the specified Unicode character in a substring within this instance. Поиск начинается с указанной позиции символа и выполняется в обратном направлении до начала строки для заданного числа позиций символов.The search starts at a specified character position and proceeds backward toward the beginning of the string for a specified number of character positions.

LastIndexOf(String, StringComparison)

Возвращает индекс с отсчетом от нуля последнего вхождения указанной строки в текущем объекте String.Reports the zero-based index of the last occurrence of a specified string within the current String object. Параметр определяет тип поиска заданной строки.A parameter specifies the type of search to use for the specified string.

LastIndexOf(Char)

Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанного символа Юникода в пределах данного экземпляра.Reports the zero-based index position of the last occurrence of a specified Unicode character within this instance.

LastIndexOf(Char, Int32)

Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанного символа Юникода в пределах данного экземпляра.Reports the zero-based index position of the last occurrence of a specified Unicode character within this instance. Поиск начинается с указанной позиции символа и выполняется в обратном направлении до начала строки.The search starts at a specified character position and proceeds backward toward the beginning of the string.

LastIndexOf(String)

Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанной строки в данном экземпляре.Reports the zero-based index position of the last occurrence of a specified string within this instance.

LastIndexOf(String, Int32, Int32, StringComparison)

Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанной строки в данном экземпляре.Reports the zero-based index position of the last occurrence of a specified string within this instance. Поиск начинается с указанной позиции символа и выполняется в обратном направлении до начала строки для заданного числа позиций символов.The search starts at a specified character position and proceeds backward toward the beginning of the string for the specified number of character positions. Параметр определяет тип сравнения для выполнения во время поиска заданной строки.A parameter specifies the type of comparison to perform when searching for the specified string.

LastIndexOf(String, Int32)

Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанной строки в данном экземпляре.Reports the zero-based index position of the last occurrence of a specified string within this instance. Поиск начинается с указанной позиции символа и выполняется в обратном направлении до начала строки.The search starts at a specified character position and proceeds backward toward the beginning of the string.

LastIndexOf(String, Int32, StringComparison)

Возвращает индекс с отсчетом от нуля последнего вхождения указанной строки в текущем объекте String.Reports the zero-based index of the last occurrence of a specified string within the current String object. Поиск начинается с указанной позиции символа и выполняется в обратном направлении до начала строки.The search starts at a specified character position and proceeds backward toward the beginning of the string. Параметр определяет тип сравнения для выполнения во время поиска заданной строки.A parameter specifies the type of comparison to perform when searching for the specified string.

public:
 int LastIndexOf(System::String ^ value, int startIndex, StringComparison comparisonType);
public int LastIndexOf (string value, int startIndex, StringComparison comparisonType);
member this.LastIndexOf : string * int * StringComparison -> int
Public Function LastIndexOf (value As String, startIndex As Integer, comparisonType As StringComparison) As Integer

Параметры

value
String

Строка для поиска.The string to seek.

startIndex
Int32

Позиция, с которой начинается поиск.The search starting position. Поиск выполняется от индекса, заданного параметром startIndex, до начала данного экземпляра.The search proceeds from startIndex toward the beginning of this instance.

comparisonType
StringComparison

Одно из значений перечисления, определяющее правила поиска.One of the enumeration values that specifies the rules for the search.

Возвраты

Отсчитываемая от нуля начальная позиция индекса параметра value, если эта строка найдена, или значение -1, если строка не найдена или текущий экземпляр равен Empty.The zero-based starting index position of the value parameter if that string is found, or -1 if it is not found or if the current instance equals Empty. Если значение параметра value равно Empty, возвращаемым значением является наименьшее значение из startIndex и последнего значения индекса в данном экземпляре.If value is Empty, the return value is the smaller of startIndex and the last index position in this instance.

Исключения

valuenull.value is null.

Текущий экземпляр не равен Empty, а startIndex меньше нуля или больше длины текущего экземпляра.The current instance does not equal Empty, and startIndex is less than zero or greater than the length of the current instance.

- или --or- Текущий экземпляр равен Empty, а startIndex меньше -1 или больше нуля.The current instance equals Empty, and startIndex is less than -1 or greater than zero.

comparisonType не является допустимым значением StringComparison.comparisonType is not a valid StringComparison value.

Примеры

В следующем примере показаны три перегрузки метода LastIndexOf, которые находят Последнее вхождение строки в другой строке, используя различные значения перечисления StringComparison.The following example demonstrates three overloads of the LastIndexOf method that find the last occurrence of a string within another string using different values of the StringComparison enumeration.

// This code example demonstrates the 
// System.String.LastIndexOf(String, ..., StringComparison) methods.

using System;
using System.Threading;
using System.Globalization;

class Sample 
{
    public static void Main() 
    {
    string intro = "Find the last occurrence of a character using different " + 
                   "values of StringComparison.";
    string resultFmt = "Comparison: {0,-28} Location: {1,3}";

// Define a string to search for.
// U+00c5 = LATIN CAPITAL LETTER A WITH RING ABOVE
    string CapitalAWithRing = "\u00c5"; 

// Define a string to search. 
// The result of combining the characters LATIN SMALL LETTER A and COMBINING 
// RING ABOVE (U+0061, U+030a) is linguistically equivalent to the character 
// LATIN SMALL LETTER A WITH RING ABOVE (U+00e5).
    string cat = "A Cheshire c" + "\u0061\u030a" + "t";
    int loc = 0;
    StringComparison[] scValues = {
        StringComparison.CurrentCulture,
        StringComparison.CurrentCultureIgnoreCase,
        StringComparison.InvariantCulture,
        StringComparison.InvariantCultureIgnoreCase,
        StringComparison.Ordinal,
        StringComparison.OrdinalIgnoreCase };

// Clear the screen and display an introduction.
    Console.Clear();
    Console.WriteLine(intro);

// Display the current culture because culture affects the result. For example, 
// try this code example with the "sv-SE" (Swedish-Sweden) culture.

    Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
    Console.WriteLine("The current culture is \"{0}\" - {1}.", 
                       Thread.CurrentThread.CurrentCulture.Name,
                       Thread.CurrentThread.CurrentCulture.DisplayName);

// Display the string to search for and the string to search.
    Console.WriteLine("Search for the string \"{0}\" in the string \"{1}\"", 
                       CapitalAWithRing, cat);
    Console.WriteLine();

// Note that in each of the following searches, we look for 
// LATIN CAPITAL LETTER A WITH RING ABOVE in a string that contains 
// LATIN SMALL LETTER A WITH RING ABOVE. A result value of -1 indicates 
// the string was not found.
// Search using different values of StringComparsion. Specify the start 
// index and count. 

    Console.WriteLine("Part 1: Start index and count are specified.");
    foreach (StringComparison sc in scValues)
        {
        loc = cat.LastIndexOf(CapitalAWithRing, cat.Length-1, cat.Length, sc);
        Console.WriteLine(resultFmt, sc, loc);
        }

// Search using different values of StringComparsion. Specify the 
// start index. 
    Console.WriteLine("\nPart 2: Start index is specified.");
    foreach (StringComparison sc in scValues)
        {
        loc = cat.LastIndexOf(CapitalAWithRing, cat.Length-1, sc);
        Console.WriteLine(resultFmt, sc, loc);
        }

// Search using different values of StringComparsion. 
    Console.WriteLine("\nPart 3: Neither start index nor count is specified.");
    foreach (StringComparison sc in scValues)
        {
        loc = cat.LastIndexOf(CapitalAWithRing, sc);
        Console.WriteLine(resultFmt, sc, loc);
        }
    }
}

/*
Note: This code example was executed on a console whose user interface 
culture is "en-US" (English-United States).

This code example produces the following results:

Find the last occurrence of a character using different values of StringComparison.
The current culture is "en-US" - English (United States).
Search for the string "Å" in the string "A Cheshire ca°t"

Part 1: Start index and count are specified.
Comparison: CurrentCulture               Location:  -1
Comparison: CurrentCultureIgnoreCase     Location:  12
Comparison: InvariantCulture             Location:  -1
Comparison: InvariantCultureIgnoreCase   Location:  12
Comparison: Ordinal                      Location:  -1
Comparison: OrdinalIgnoreCase            Location:  -1

Part 2: Start index is specified.
Comparison: CurrentCulture               Location:  -1
Comparison: CurrentCultureIgnoreCase     Location:  12
Comparison: InvariantCulture             Location:  -1
Comparison: InvariantCultureIgnoreCase   Location:  12
Comparison: Ordinal                      Location:  -1
Comparison: OrdinalIgnoreCase            Location:  -1

Part 3: Neither start index nor count is specified.
Comparison: CurrentCulture               Location:  -1
Comparison: CurrentCultureIgnoreCase     Location:  12
Comparison: InvariantCulture             Location:  -1
Comparison: InvariantCultureIgnoreCase   Location:  12
Comparison: Ordinal                      Location:  -1
Comparison: OrdinalIgnoreCase            Location:  -1

*/
' This code example demonstrates the 
' System.String.LastIndexOf(String, ..., StringComparison) methods.

Imports System.Threading
Imports System.Globalization

Class Sample
    Public Shared Sub Main() 
        Dim intro As String = "Find the last occurrence of a character using different " & _
                              "values of StringComparison."
        Dim resultFmt As String = "Comparison: {0,-28} Location: {1,3}"
        
        ' Define a string to search for.
        ' U+00c5 = LATIN CAPITAL LETTER A WITH RING ABOVE
        Dim CapitalAWithRing As String = "Å"
        
        ' Define a string to search. 
        ' The result of combining the characters LATIN SMALL LETTER A and COMBINING 
        ' RING ABOVE (U+0061, U+030a) is linguistically equivalent to the character 
        ' LATIN SMALL LETTER A WITH RING ABOVE (U+00e5).
        Dim cat As String = "A Cheshire c" & "å" & "t"
        Dim loc As Integer = 0
        Dim scValues As StringComparison() =  { _
                        StringComparison.CurrentCulture, _
                        StringComparison.CurrentCultureIgnoreCase, _
                        StringComparison.InvariantCulture, _
                        StringComparison.InvariantCultureIgnoreCase, _
                        StringComparison.Ordinal, _
                        StringComparison.OrdinalIgnoreCase }
        Dim sc As StringComparison
        
        ' Clear the screen and display an introduction.
        Console.Clear()
        Console.WriteLine(intro)
        
        ' Display the current culture because culture affects the result. For example, 
        ' try this code example with the "sv-SE" (Swedish-Sweden) culture.
        Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
        Console.WriteLine("The current culture is ""{0}"" - {1}.", _
                           Thread.CurrentThread.CurrentCulture.Name, _
                           Thread.CurrentThread.CurrentCulture.DisplayName)
        
        ' Display the string to search for and the string to search.
        Console.WriteLine("Search for the string ""{0}"" in the string ""{1}""", _
                           CapitalAWithRing, cat)
        Console.WriteLine()
        
        ' Note that in each of the following searches, we look for 
        ' LATIN CAPITAL LETTER A WITH RING ABOVE in a string that contains 
        ' LATIN SMALL LETTER A WITH RING ABOVE. A result value of -1 indicates 
        ' the string was not found.
        ' Search using different values of StringComparsion. Specify the start 
        ' index and count. 
        Console.WriteLine("Part 1: Start index and count are specified.")
        For Each sc In  scValues
            loc = cat.LastIndexOf(CapitalAWithRing, cat.Length - 1, cat.Length, sc)
            Console.WriteLine(resultFmt, sc, loc)
        Next sc
        
        ' Search using different values of StringComparsion. Specify the 
        ' start index. 
        Console.WriteLine(vbCrLf & "Part 2: Start index is specified.")
        For Each sc In  scValues
            loc = cat.LastIndexOf(CapitalAWithRing, cat.Length - 1, sc)
            Console.WriteLine(resultFmt, sc, loc)
        Next sc
        
        ' Search using different values of StringComparsion. 
        Console.WriteLine(vbCrLf & "Part 3: Neither start index nor count is specified.")
        For Each sc In  scValues
            loc = cat.LastIndexOf(CapitalAWithRing, sc)
            Console.WriteLine(resultFmt, sc, loc)
        Next sc
    
    End Sub
End Class

'
'Note: This code example was executed on a console whose user interface 
'culture is "en-US" (English-United States).
'
'This code example produces the following results:
'
'Find the last occurrence of a character using different values of StringComparison.
'The current culture is "en-US" - English (United States).
'Search for the string "Å" in the string "A Cheshire ca°t"
'
'Part 1: Start index and count are specified.
'Comparison: CurrentCulture               Location:  -1
'Comparison: CurrentCultureIgnoreCase     Location:  12
'Comparison: InvariantCulture             Location:  -1
'Comparison: InvariantCultureIgnoreCase   Location:  12
'Comparison: Ordinal                      Location:  -1
'Comparison: OrdinalIgnoreCase            Location:  -1
'
'Part 2: Start index is specified.
'Comparison: CurrentCulture               Location:  -1
'Comparison: CurrentCultureIgnoreCase     Location:  12
'Comparison: InvariantCulture             Location:  -1
'Comparison: InvariantCultureIgnoreCase   Location:  12
'Comparison: Ordinal                      Location:  -1
'Comparison: OrdinalIgnoreCase            Location:  -1
'
'Part 3: Neither start index nor count is specified.
'Comparison: CurrentCulture               Location:  -1
'Comparison: CurrentCultureIgnoreCase     Location:  12
'Comparison: InvariantCulture             Location:  -1
'Comparison: InvariantCultureIgnoreCase   Location:  12
'Comparison: Ordinal                      Location:  -1
'Comparison: OrdinalIgnoreCase            Location:  -1
'

Комментарии

Нумерация индексов начинается с нуля.Index numbering starts from zero. То есть первый символ в строке имеет нулевой индекс, а последний — в Length-1.That is, the first character in the string is at index zero and the last is at Length - 1.

Поиск начинается с позиции знака startIndex и переходит назад, пока не обнаружится value или не будет проверен первый символ.The search begins at the startIndex character position and proceeds backward until either value is found or the first character position has been examined. Например, если startIndexLength-1, метод ищет каждый символ из последнего символа в строке в начале.For example, if startIndex is Length - 1, the method searches every character from the last character in the string to the beginning.

Параметр comparisonType определяет Поиск параметра value, используя текущий или инвариантный язык и региональные параметры, с учетом регистра или без учета регистра, а также с помощью правил сравнения по словам или порядковому номеру.The comparisonType parameter specifies to search for the value parameter using the current or invariant culture, using a case-sensitive or case-insensitive search, and using word or ordinal comparison rules.

Примечания для тех, кто вызывает этот метод

Наборы символов содержат игнорируемые символы, то есть символы, которые не учитываются при выполнении лингвистического сравнения или сравнения с учетом языка и региональных параметров.Character sets include ignorable characters, which are characters that are not considered when performing a linguistic or culture-sensitive comparison. Если при поиске с учетом языка и региональных параметров (то есть, если параметр comparisonType не имеет значение Ordinal или OrdinalIgnoreCase) параметр value содержит игнорируемый символ, результат аналогичен поиску с удаленным этим символом.In a culture-sensitive search (that is, if comparisonType is not Ordinal or OrdinalIgnoreCase), if value contains an ignorable character, the result is equivalent to searching with that character removed. Если value состоит только из одного или нескольких игнорируемых символов, метод LastIndexOf(String, Int32, StringComparison) всегда возвращает startIndex, то есть позиции символа, с которой начинается поиск.If value consists only of one or more ignorable characters, the LastIndexOf(String, Int32, StringComparison) method always returns startIndex, which is the character position at which the search begins.

В следующем примере метод LastIndexOf(String, Int32, StringComparison) используется для поиска положения мягкого дефиса (U + 00AD), за которым следует символ "m", начиная с последнего "m" в двух строках.In the following example, the LastIndexOf(String, Int32, StringComparison) method is used to find the position of a soft hyphen (U+00AD) followed by an "m", starting with the final "m" in two strings. Только одна из строк содержит требуемую подстроку.Only one of the strings contains the required substring. Если пример выполняется в .NET Framework 4.NET Framework 4 или более поздней версии, в обоих случаях, поскольку мягкий дефис является игнорируемым символом, метод возвращает индекс "m" в строке, когда он выполняет сравнение с учетом языка и региональных параметров.If the example is run on the .NET Framework 4.NET Framework 4 or later, in both cases, because the soft hyphen is an ignorable character, the method returns the index of "m" in the string when it performs a culture-sensitive comparison. Обратите внимание, что в случае первой строки, содержащей мягкий перенос перед буквой "m", этот метод возвращает не индекс мягкого переноса, а индекс буквы "m".Note that in the case of the first string, which includes the soft hyphen followed by an "m", the method fails to return the index of the soft hyphen but instead returns the index of the "m". Этот метод возвращает индекс мягкого переноса в первой строке только при выполнении порядкового сравнения.The method returns the index of the soft hyphen in the first string only when it performs an ordinal comparison.

[! код-CSharpSystem. String. LastIndexOf # 25] [! код-VBSystem. String. LastIndexOf # 25][!code-csharpSystem.String.LastIndexOf#25] [!code-vbSystem.String.LastIndexOf#25]

LastIndexOf(String, Int32, Int32)

Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанной строки в данном экземпляре.Reports the zero-based index position of the last occurrence of a specified string within this instance. Поиск начинается с указанной позиции символа и выполняется в обратном направлении до начала строки для заданного числа позиций символов.The search starts at a specified character position and proceeds backward toward the beginning of the string for a specified number of character positions.

public:
 int LastIndexOf(System::String ^ value, int startIndex, int count);
public int LastIndexOf (string value, int startIndex, int count);
member this.LastIndexOf : string * int * int -> int
Public Function LastIndexOf (value As String, startIndex As Integer, count As Integer) As Integer

Параметры

value
String

Строка для поиска.The string to seek.

startIndex
Int32

Позиция, с которой начинается поиск.The search starting position. Поиск выполняется от индекса, заданного параметром startIndex, до начала данного экземпляра.The search proceeds from startIndex toward the beginning of this instance.

count
Int32

Количество позиций знаков для проверки.The number of character positions to examine.

Возвраты

Отсчитываемая от нуля начальная позиция индекса параметра value, если строка найдена; значение -1, если строка не найдена или значение текущего экземпляра равно Empty.The zero-based starting index position of value if that string is found, or -1 if it is not found or if the current instance equals Empty. Если значение параметра value равно Empty, возвращаемым значением является наименьшее значение из startIndex и последнего значения индекса в данном экземпляре.If value is Empty, the return value is the smaller of startIndex and the last index position in this instance.

Исключения

valuenull.value is null.

count является отрицательным значением.count is negative.

- или --or- Текущий экземпляр не равен Empty, а startIndex является отрицательным.The current instance does not equal Empty, and startIndex is negative.

- или --or- Текущий экземпляр не равен Empty, а startIndex превышает длину этого экземпляра.The current instance does not equal Empty, and startIndex is greater than the length of this instance.

- или --or- Текущий экземпляр не равен Empty, а startIndex - count + 1 указывает позицию вне пределов данного экземпляра.The current instance does not equal Empty, and startIndex - count+ 1 specifies a position that is not within this instance.

- или --or- Текущий экземпляр равен Empty, а start меньше -1 или больше нуля.The current instance equals Empty and start is less than -1 or greater than zero.

- или --or- Текущий экземпляр равен Empty, а count больше 1.The current instance equals Empty and count is greater than 1.

Примеры

В следующем примере выполняется поиск индекса всех вхождений строки в подстроке, начиная с конца подстроки до начала подстроки.The following example finds the index of all occurrences of a string in substring, working from the end of the substring to the start of the substring.

// Sample for String::LastIndexOf(String, Int32, Int32)
using namespace System;
int main()
{
   String^ br1 = "0----+----1----+----2----+----3----+----4----+----5----+----6----+-";
   String^ br2 = "0123456789012345678901234567890123456789012345678901234567890123456";
   String^ str = "Now is the time for all good men to come to the aid of their party.";
   int start;
   int at;
   int count;
   int end;
   start = str->Length - 1;
   end = start / 2 - 1;
   Console::WriteLine( "All occurrences of 'he' from position {0} to {1}.", start, end );
   Console::WriteLine( "{1}{0}{2}{0}{3}{0}", Environment::NewLine, br1, br2, str );
   Console::Write( "The string 'he' occurs at position(s): " );
   count = 0;
   at = 0;
   while ( (start > -1) && (at > -1) )
   {
      count = start - end; //Count must be within the substring.
      at = str->LastIndexOf( "he", start, count );
      if ( at > -1 )
      {
         Console::Write( "{0} ", at );
         start = at - 1;
      }
   }

   Console::Write( "{0} {0} {0}", Environment::NewLine );
}

/*
This example produces the following results:
All occurrences of 'he' from position 66 to 32.
0----+----1----+----2----+----3----+----4----+----5----+----6----+-
0123456789012345678901234567890123456789012345678901234567890123456
Now is the time for all good men to come to the aid of their party.

The string 'he' occurs at position(s): 56 45
*/
// Sample for String.LastIndexOf(String, Int32, Int32)
using System;

class Sample {
    public static void Main() {

    string br1 = "0----+----1----+----2----+----3----+----4----+----5----+----6----+-";
    string br2 = "0123456789012345678901234567890123456789012345678901234567890123456";
    string str = "Now is the time for all good men to come to the aid of their party.";
    int start;
    int at;
    int count;
    int end;

    start = str.Length-1;
    end = start/2 - 1;
    Console.WriteLine("All occurrences of 'he' from position {0} to {1}.", start, end);
    Console.WriteLine("{1}{0}{2}{0}{3}{0}", Environment.NewLine, br1, br2, str);
    Console.Write("The string 'he' occurs at position(s): ");

    count = 0;
    at = 0;
    while((start > -1) && (at > -1))
        {
        count = start - end; //Count must be within the substring.
        at = str.LastIndexOf("he", start, count);
        if (at > -1) 
            {
            Console.Write("{0} ", at);
            start = at - 1;
            }
        }
    Console.Write("{0}{0}{0}", Environment.NewLine);
    }
}
/*
This example produces the following results:
All occurrences of 'he' from position 66 to 32.
0----+----1----+----2----+----3----+----4----+----5----+----6----+-
0123456789012345678901234567890123456789012345678901234567890123456
Now is the time for all good men to come to the aid of their party.

The string 'he' occurs at position(s): 56 45
*/
' Sample for String.LastIndexOf(String, Int32, Int32)
 _

Class Sample
   
   Public Shared Sub Main()
      
      Dim br1 As String = "0----+----1----+----2----+----3----+----4----+----5----+----6----+-"
      Dim br2 As String = "0123456789012345678901234567890123456789012345678901234567890123456"
      Dim str As String = "Now is the time for all good men to come to the aid of their party."
      Dim start As Integer
      Dim at As Integer
      Dim count As Integer
      Dim [end] As Integer

      start = str.Length - 1
      [end] = start / 2 - 1
      Console.WriteLine("All occurrences of 'he' from position {0} to {1}.", start, [end])
      Console.WriteLine("{1}{0}{2}{0}{3}{0}", Environment.NewLine, br1, br2, str)
      Console.Write("The string 'he' occurs at position(s): ")
      
      count = 0
      at = 0
      While start > - 1 And at > - 1
         count = start - [end] 'Count must be within the substring.
         at = str.LastIndexOf("he", start, count)
         If at > - 1 Then
            Console.Write("{0} ", at)
            start = at - 1
         End If
      End While
      Console.Write("{0}{0}{0}", Environment.NewLine)
   End Sub
End Class
'
'This example produces the following results:
'All occurrences of 'he' from position 66 to 32.
'0----+----1----+----2----+----3----+----4----+----5----+----6----+-
'0123456789012345678901234567890123456789012345678901234567890123456
'Now is the time for all good men to come to the aid of their party.
'
'The string 'he' occurs at position(s): 56 45
'
'

Комментарии

Нумерация индексов начинается с нуля.Index numbering starts from zero. То есть первый символ в строке имеет нулевой индекс, а последний — в Length-1.That is, the first character in the string is at index zero and the last is at Length - 1.

Поиск начинается с позиции знака startIndex данного экземпляра и переходит назад к началу до тех пор, пока не обнаружится value или не будет проверено count позиций символов.The search begins at the startIndex character position of this instance and proceeds backward toward the beginning until either value is found or count character positions have been examined. Например, если startIndexLength-1, метод ищет в обратном направлении count символа из последнего символа строки.For example, if startIndex is Length - 1, the method searches backward count characters from the last character in the string.

Этот метод выполняет поиск по словам (с учетом регистра и с учетом языка и региональных параметров), используя текущий язык и региональные параметры.This method performs a word (case-sensitive and culture-sensitive) search using the current culture.

Наборы символов содержат игнорируемые символы, то есть символы, которые не учитываются при выполнении лингвистического сравнения или сравнения с учетом языка и региональных параметров.Character sets include ignorable characters, which are characters that are not considered when performing a linguistic or culture-sensitive comparison. Если при поиске с учетом языка и региональных параметров параметр value содержит игнорируемый символ, результат аналогичен поиску с удаленным этим символом.In a culture-sensitive search, if value contains an ignorable character, the result is equivalent to searching with that character removed. Если value состоит только из одного или нескольких игнорируемых символов, метод LastIndexOf всегда возвращает startIndex, то есть позиции символа, с которой начинается поиск.If value consists only of one or more ignorable characters, the LastIndexOf method always returns startIndex, which is the character position at which the search begins. В следующем примере метод LastIndexOf используется для поиска расположения мягкого дефиса (U + 00AD) в двух символах, предшествующих последней букве "m" двух строк.In the following example, the LastIndexOf method is used to find the position of a soft hyphen (U+00AD) in the two characters that precede the final "m" of two strings. Только одна из строк содержит требуемую подстроку.Only one of the strings contains the required substring. Если пример выполняется в .NET Framework 4.NET Framework 4 или более поздней версии, в обоих случаях, поскольку мягкий дефис является игнорируемым символом, метод возвращает индекс "m" в строке, когда он выполняет сравнение с учетом языка и региональных параметров.If the example is run on the .NET Framework 4.NET Framework 4 or later, in both cases, because the soft hyphen is an ignorable character, the method returns the index of "m" in the string when it performs a culture-sensitive comparison. Обратите внимание, что в случае первой строки, содержащей мягкий перенос перед буквой "m", этот метод возвращает не индекс мягкого переноса, а индекс буквы "m".Note that in the case of the first string, which includes the soft hyphen followed by an "m", the method fails to return the index of the soft hyphen but instead returns the index of the "m".

using System;

public class Example
{
   public static void Main()
   {
      int position = 0;
      string s1 = "ani\u00ADmal";
      string s2 = "animal";
      
      // Find the index of the soft hyphen.
      position = s1.LastIndexOf("m");
      Console.WriteLine("'m' at position {0}", position);
      if (position >= 0)
         Console.WriteLine(s1.LastIndexOf("\u00AD", position, position + 1));

      position = s2.LastIndexOf("m");
      Console.WriteLine("'m' at position {0}", position);
      if (position >= 0)   
         Console.WriteLine(s2.LastIndexOf("\u00AD", position, position + 1));
      
      // Find the index of the soft hyphen followed by "n".
      position = s1.LastIndexOf("m");
      Console.WriteLine("'m' at position {0}", position);
      if (position >= 0)
         Console.WriteLine(s1.LastIndexOf("\u00ADn", position, position + 1));

      position = s2.LastIndexOf("m");
      Console.WriteLine("'m' at position {0}", position);
      if (position >= 0)   
         Console.WriteLine(s2.LastIndexOf("\u00ADn", position, position + 1));
      
      // Find the index of the soft hyphen followed by "m".
      position = s1.LastIndexOf("m");
      Console.WriteLine("'m' at position {0}", position);
      if (position >= 0)
         Console.WriteLine(s1.LastIndexOf("\u00ADm", position, position + 1));

      position = s2.LastIndexOf("m");
      Console.WriteLine("'m' at position {0}", position);
      if (position >= 0)   
         Console.WriteLine(s2.LastIndexOf("\u00ADm", position, position + 1));
   }
}
// The example displays the following output:
//       'm' at position 4
//       4
//       'm' at position 3
//       3
//       'm' at position 4
//       1
//       'm' at position 3
//       1
//       'm' at position 4
//       4
//       'm' at position 3
//       3
Module Example
   Public Sub Main()
      Dim position As Integer
      Dim softHyphen As String = ChrW(&h00AD)
      
      Dim s1 As String = "ani" + softHyphen + "mal"
      Dim s2 As String = "animal"
      
      ' Find the index of the soft hyphen.
      position = s1.LastIndexOf("m")
      Console.WriteLine("'m' at position {0}", position)
      If position >= 0 Then
         Console.WriteLine(s1.LastIndexOf(softHyphen, position, position + 1))
      End If
         
      position = s2.LastIndexOf("m")
      Console.WriteLine("'m' at position {0}", position)
      If position >= 0 Then
         Console.WriteLine(s2.LastIndexOf(softHyphen, position, position + 1))
      End If
      
      ' Find the index of the soft hyphen followed by "n".
      position = s1.LastIndexOf("m")
      Console.WriteLine("'m' at position {0}", position)
      If position >= 0 Then
         Console.WriteLine(s1.LastIndexOf(softHyphen + "n", position, position + 1))
      End If
         
      position = s2.LastIndexOf("m")
      Console.WriteLine("'m' at position {0}", position)
      If position >= 0 Then
         Console.WriteLine(s2.LastIndexOf(softHyphen + "n", position, position + 1))
      End If
      
      ' Find the index of the soft hyphen followed by "m".
      position = s1.LastIndexOf("m")
      Console.WriteLine("'m' at position {0}", position)
      If position >= 0 Then
         Console.WriteLine(s1.LastIndexOf(softHyphen + "m", position, position + 1))
      End If
      
      position = s2.LastIndexOf("m")
      Console.WriteLine("'m' at position {0}", position)
      If position >= 0 Then
         Console.WriteLine(s2.LastIndexOf(softHyphen + "m", position, position + 1))
      End If
   End Sub
End Module
' The example displays the following output:
'       'm' at position 4
'       4
'       'm' at position 3
'       3
'       'm' at position 4
'       1
'       'm' at position 3
'       1
'       'm' at position 4
'       4
'       'm' at position 3
'       3

Примечания для тех, кто вызывает этот метод

Как описано в статье рекомендации по использованию строк, рекомендуется избегать вызова методов сравнения строк, которые заменяют значения по умолчанию, а вызывают методы, для которых требуется явно указать параметры.As explained in Best Practices for Using Strings, we recommend that you avoid calling string comparison methods that substitute default values and instead call methods that require parameters to be explicitly specified. Чтобы выполнить эту операцию с помощью правил сравнения текущего языка и региональных параметров, вызовите перегрузку метода LastIndexOf(String, Int32, Int32, StringComparison) со значением CurrentCulture для своего параметра comparisonType.To perform this operation by using the comparison rules of the current culture, call the LastIndexOf(String, Int32, Int32, StringComparison) method overload with a value of CurrentCulture for its comparisonType parameter.

Дополнительно

LastIndexOf(Char, Int32, Int32)

Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанного символа Юникода в подстроке в пределах данного экземпляра.Reports the zero-based index position of the last occurrence of the specified Unicode character in a substring within this instance. Поиск начинается с указанной позиции символа и выполняется в обратном направлении до начала строки для заданного числа позиций символов.The search starts at a specified character position and proceeds backward toward the beginning of the string for a specified number of character positions.

public:
 int LastIndexOf(char value, int startIndex, int count);
public int LastIndexOf (char value, int startIndex, int count);
member this.LastIndexOf : char * int * int -> int
Public Function LastIndexOf (value As Char, startIndex As Integer, count As Integer) As Integer

Параметры

value
Char

Знак Юникода, который необходимо найти.The Unicode character to seek.

startIndex
Int32

Начальное положение поиска.The starting position of the search. Поиск выполняется от индекса, заданного параметром startIndex, до начала данного экземпляра.The search proceeds from startIndex toward the beginning of this instance.

count
Int32

Количество позиций знаков для проверки.The number of character positions to examine.

Возвраты

Отсчитываемая от нуля позиция параметра value в индексе, если этот символ найден, или значение -1, если он не найден или текущий экземпляр равен Empty.The zero-based index position of value if that character is found, or -1 if it is not found or if the current instance equals Empty.

Исключения

Текущий экземпляр не равен Empty, а startIndex меньше нуля либо равно или превышает длину этого экземпляра.The current instance does not equal Empty, and startIndex is less than zero or greater than or equal to the length of this instance.

- или --or- Текущий экземпляр не равен Empty, а startIndex - count + 1 является отрицательным числом.The current instance does not equal Empty, and startIndex - count + 1 is less than zero.

Примеры

В следующем примере выполняется поиск индекса всех вхождений символа в подстроке, начиная с конца подстроки до начала подстроки.The following example finds the index of all occurrences of a character in a substring, working from the end of the substring to the start of the substring.

// Sample for String::LastIndexOf(Char, Int32, Int32)
using namespace System;
int main()
{
   String^ br1 = "0----+----1----+----2----+----3----+----4----+----5----+----6----+-";
   String^ br2 = "0123456789012345678901234567890123456789012345678901234567890123456";
   String^ str = "Now is the time for all good men to come to the aid of their party.";
   int start;
   int at;
   int count;
   int end;
   start = str->Length - 1;
   end = start / 2 - 1;
   Console::WriteLine( "All occurrences of 't' from position {0} to {1}.", start, end );
   Console::WriteLine( "\n{0}\n{1}\n{2}", br1, br2, str );
   Console::Write( "The letter 't' occurs at position(s): " );
   count = 0;
   at = 0;
   while ( (start > -1) && (at > -1) )
   {
      count = start - end; //Count must be within the substring.
      at = str->LastIndexOf( 't', start, count );
      if ( at > -1 )
      {
         Console::Write( " {0} ", at );
         start = at - 1;
      }
   }
}

/*
This example produces the following results:
All occurrences of 't' from position 66 to 32.
0----+----1----+----2----+----3----+----4----+----5----+----6----+-
0123456789012345678901234567890123456789012345678901234567890123456
Now is the time for all good men to come to the aid of their party.

The letter 't' occurs at position(s): 64 55 44 41 33


*/
// Sample for String.LastIndexOf(Char, Int32, Int32)
using System;

class Sample {
    public static void Main() {

    string br1 = "0----+----1----+----2----+----3----+----4----+----5----+----6----+-";
    string br2 = "0123456789012345678901234567890123456789012345678901234567890123456";
    string str = "Now is the time for all good men to come to the aid of their party.";
    int start;
    int at;
    int count;
    int end;

    start = str.Length-1;
    end = start/2 - 1;
    Console.WriteLine("All occurrences of 't' from position {0} to {1}.", start, end);
    Console.WriteLine("{1}{0}{2}{0}{3}{0}", Environment.NewLine, br1, br2, str);
    Console.Write("The letter 't' occurs at position(s): ");

    count = 0;
    at = 0;
    while((start > -1) && (at > -1))
        {
        count = start - end; //Count must be within the substring.
        at = str.LastIndexOf('t', start, count);
        if (at > -1) 
            {
            Console.Write("{0} ", at);
            start = at - 1;
            }
        }
    Console.Write("{0}{0}{0}", Environment.NewLine);
    }
}
/*
This example produces the following results:
All occurrences of 't' from position 66 to 32.
0----+----1----+----2----+----3----+----4----+----5----+----6----+-
0123456789012345678901234567890123456789012345678901234567890123456
Now is the time for all good men to come to the aid of their party.

The letter 't' occurs at position(s): 64 55 44 41 33


*/
' Sample for String.LastIndexOf(Char, Int32, Int32)
 _

Class Sample
   
   Public Shared Sub Main()
      
      Dim br1 As String = "0----+----1----+----2----+----3----+----4----+----5----+----6----+-"
      Dim br2 As String = "0123456789012345678901234567890123456789012345678901234567890123456"
      Dim str As String = "Now is the time for all good men to come to the aid of their party."
      Dim start As Integer
      Dim at As Integer
      Dim count As Integer
      Dim [end] As Integer

      start = str.Length - 1
      [end] = start / 2 - 1
      Console.WriteLine("All occurrences of 't' from position {0} to {1}.", start, [end])
      Console.WriteLine("{1}{0}{2}{0}{3}{0}", Environment.NewLine, br1, br2, str)
      Console.Write("The letter 't' occurs at position(s): ")
      
      count = 0
      at = 0
      While start > - 1 And at > - 1
         count = start - [end] 'Count must be within the substring.
         at = str.LastIndexOf("t"c, start, count)
         If at > - 1 Then
            Console.Write("{0} ", at)
            start = at - 1
         End If
      End While
      Console.Write("{0}{0}{0}", Environment.NewLine)
   End Sub
End Class
'
'This example produces the following results:
'All occurrences of 't' from position 66 to 32.
'0----+----1----+----2----+----3----+----4----+----5----+----6----+-
'0123456789012345678901234567890123456789012345678901234567890123456
'Now is the time for all good men to come to the aid of their party.
'
'The letter 't' occurs at position(s): 64 55 44 41 33
'
'

Комментарии

Нумерация индексов начинается с нуля.Index numbering starts from zero. То есть первый символ в строке имеет нулевой индекс, а последний — в Length-1.That is, the first character in the string is at index zero and the last is at Length - 1.

Этот метод начинает поиск с позиции знака startIndex и переходит назад к началу этого экземпляра до тех пор, пока не будет найден value или не будут проверены позиции символов count.This method begins searching at the startIndex character position and proceeds backward toward the beginning of this instance until either value is found or count character positions have been examined. Например, если startIndexLength-1, метод ищет в обратном направлении count символа из последнего символа строки.For example, if startIndex is Length - 1, the method searches backward count characters from the last character in the string. При поиске учитывается регистр.The search is case-sensitive.

Этот метод выполняет поиск по порядковому номеру (без учета языка и региональных параметров), где символ считается эквивалентным другому символу, только если их скалярное значение в Юникоде одинаково.This method performs an ordinal (culture-insensitive) search, where a character is considered equivalent to another character only if their Unicode scalar value are the same. Чтобы выполнить поиск с учетом языка и региональных параметров, используйте метод CompareInfo.LastIndexOf, где скалярное значение Юникода, представляющее составной символ, например лигатура "Æ" (U + 00C6), может считаться эквивалентным любому вхождению компонентов символа в правильном последовательность, например "AE" (U + 0041, U + 0045), в зависимости от языка и региональных параметров.To perform a culture-sensitive search, use the CompareInfo.LastIndexOf method, where a Unicode scalar value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture.

Дополнительно

LastIndexOf(String, StringComparison)

Возвращает индекс с отсчетом от нуля последнего вхождения указанной строки в текущем объекте String.Reports the zero-based index of the last occurrence of a specified string within the current String object. Параметр определяет тип поиска заданной строки.A parameter specifies the type of search to use for the specified string.

public:
 int LastIndexOf(System::String ^ value, StringComparison comparisonType);
public int LastIndexOf (string value, StringComparison comparisonType);
member this.LastIndexOf : string * StringComparison -> int
Public Function LastIndexOf (value As String, comparisonType As StringComparison) As Integer

Параметры

value
String

Строка для поиска.The string to seek.

comparisonType
StringComparison

Одно из значений перечисления, определяющее правила поиска.One of the enumeration values that specifies the rules for the search.

Возвраты

Начальное положение в отсчитываемом от нуля индексе параметра value, если эта строка найдена, или значение -1, если она не найдена.The zero-based starting index position of the value parameter if that string is found, or -1 if it is not. Если параметр value равен Empty, возвращаемым значением является последняя позиция в индексе данного экземпляра.If value is Empty, the return value is the last index position in this instance.

Исключения

Свойство value имеет значение null.value is null.

comparisonType не является допустимым значением StringComparison.comparisonType is not a valid StringComparison value.

Примеры

В следующем примере показаны три перегрузки метода LastIndexOf, которые находят Последнее вхождение строки в другой строке, используя различные значения перечисления StringComparison.The following example demonstrates three overloads of the LastIndexOf method that find the last occurrence of a string within another string using different values of the StringComparison enumeration.

// This code example demonstrates the 
// System.String.LastIndexOf(String, ..., StringComparison) methods.

using System;
using System.Threading;
using System.Globalization;

class Sample 
{
    public static void Main() 
    {
    string intro = "Find the last occurrence of a character using different " + 
                   "values of StringComparison.";
    string resultFmt = "Comparison: {0,-28} Location: {1,3}";

// Define a string to search for.
// U+00c5 = LATIN CAPITAL LETTER A WITH RING ABOVE
    string CapitalAWithRing = "\u00c5"; 

// Define a string to search. 
// The result of combining the characters LATIN SMALL LETTER A and COMBINING 
// RING ABOVE (U+0061, U+030a) is linguistically equivalent to the character 
// LATIN SMALL LETTER A WITH RING ABOVE (U+00e5).
    string cat = "A Cheshire c" + "\u0061\u030a" + "t";
    int loc = 0;
    StringComparison[] scValues = {
        StringComparison.CurrentCulture,
        StringComparison.CurrentCultureIgnoreCase,
        StringComparison.InvariantCulture,
        StringComparison.InvariantCultureIgnoreCase,
        StringComparison.Ordinal,
        StringComparison.OrdinalIgnoreCase };

// Clear the screen and display an introduction.
    Console.Clear();
    Console.WriteLine(intro);

// Display the current culture because culture affects the result. For example, 
// try this code example with the "sv-SE" (Swedish-Sweden) culture.

    Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
    Console.WriteLine("The current culture is \"{0}\" - {1}.", 
                       Thread.CurrentThread.CurrentCulture.Name,
                       Thread.CurrentThread.CurrentCulture.DisplayName);

// Display the string to search for and the string to search.
    Console.WriteLine("Search for the string \"{0}\" in the string \"{1}\"", 
                       CapitalAWithRing, cat);
    Console.WriteLine();

// Note that in each of the following searches, we look for 
// LATIN CAPITAL LETTER A WITH RING ABOVE in a string that contains 
// LATIN SMALL LETTER A WITH RING ABOVE. A result value of -1 indicates 
// the string was not found.
// Search using different values of StringComparsion. Specify the start 
// index and count. 

    Console.WriteLine("Part 1: Start index and count are specified.");
    foreach (StringComparison sc in scValues)
        {
        loc = cat.LastIndexOf(CapitalAWithRing, cat.Length-1, cat.Length, sc);
        Console.WriteLine(resultFmt, sc, loc);
        }

// Search using different values of StringComparsion. Specify the 
// start index. 
    Console.WriteLine("\nPart 2: Start index is specified.");
    foreach (StringComparison sc in scValues)
        {
        loc = cat.LastIndexOf(CapitalAWithRing, cat.Length-1, sc);
        Console.WriteLine(resultFmt, sc, loc);
        }

// Search using different values of StringComparsion. 
    Console.WriteLine("\nPart 3: Neither start index nor count is specified.");
    foreach (StringComparison sc in scValues)
        {
        loc = cat.LastIndexOf(CapitalAWithRing, sc);
        Console.WriteLine(resultFmt, sc, loc);
        }
    }
}

/*
Note: This code example was executed on a console whose user interface 
culture is "en-US" (English-United States).

This code example produces the following results:

Find the last occurrence of a character using different values of StringComparison.
The current culture is "en-US" - English (United States).
Search for the string "Å" in the string "A Cheshire ca°t"

Part 1: Start index and count are specified.
Comparison: CurrentCulture               Location:  -1
Comparison: CurrentCultureIgnoreCase     Location:  12
Comparison: InvariantCulture             Location:  -1
Comparison: InvariantCultureIgnoreCase   Location:  12
Comparison: Ordinal                      Location:  -1
Comparison: OrdinalIgnoreCase            Location:  -1

Part 2: Start index is specified.
Comparison: CurrentCulture               Location:  -1
Comparison: CurrentCultureIgnoreCase     Location:  12
Comparison: InvariantCulture             Location:  -1
Comparison: InvariantCultureIgnoreCase   Location:  12
Comparison: Ordinal                      Location:  -1
Comparison: OrdinalIgnoreCase            Location:  -1

Part 3: Neither start index nor count is specified.
Comparison: CurrentCulture               Location:  -1
Comparison: CurrentCultureIgnoreCase     Location:  12
Comparison: InvariantCulture             Location:  -1
Comparison: InvariantCultureIgnoreCase   Location:  12
Comparison: Ordinal                      Location:  -1
Comparison: OrdinalIgnoreCase            Location:  -1

*/
' This code example demonstrates the 
' System.String.LastIndexOf(String, ..., StringComparison) methods.

Imports System.Threading
Imports System.Globalization

Class Sample
    Public Shared Sub Main() 
        Dim intro As String = "Find the last occurrence of a character using different " & _
                              "values of StringComparison."
        Dim resultFmt As String = "Comparison: {0,-28} Location: {1,3}"
        
        ' Define a string to search for.
        ' U+00c5 = LATIN CAPITAL LETTER A WITH RING ABOVE
        Dim CapitalAWithRing As String = "Å"
        
        ' Define a string to search. 
        ' The result of combining the characters LATIN SMALL LETTER A and COMBINING 
        ' RING ABOVE (U+0061, U+030a) is linguistically equivalent to the character 
        ' LATIN SMALL LETTER A WITH RING ABOVE (U+00e5).
        Dim cat As String = "A Cheshire c" & "å" & "t"
        Dim loc As Integer = 0
        Dim scValues As StringComparison() =  { _
                        StringComparison.CurrentCulture, _
                        StringComparison.CurrentCultureIgnoreCase, _
                        StringComparison.InvariantCulture, _
                        StringComparison.InvariantCultureIgnoreCase, _
                        StringComparison.Ordinal, _
                        StringComparison.OrdinalIgnoreCase }
        Dim sc As StringComparison
        
        ' Clear the screen and display an introduction.
        Console.Clear()
        Console.WriteLine(intro)
        
        ' Display the current culture because culture affects the result. For example, 
        ' try this code example with the "sv-SE" (Swedish-Sweden) culture.
        Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
        Console.WriteLine("The current culture is ""{0}"" - {1}.", _
                           Thread.CurrentThread.CurrentCulture.Name, _
                           Thread.CurrentThread.CurrentCulture.DisplayName)
        
        ' Display the string to search for and the string to search.
        Console.WriteLine("Search for the string ""{0}"" in the string ""{1}""", _
                           CapitalAWithRing, cat)
        Console.WriteLine()
        
        ' Note that in each of the following searches, we look for 
        ' LATIN CAPITAL LETTER A WITH RING ABOVE in a string that contains 
        ' LATIN SMALL LETTER A WITH RING ABOVE. A result value of -1 indicates 
        ' the string was not found.
        ' Search using different values of StringComparsion. Specify the start 
        ' index and count. 
        Console.WriteLine("Part 1: Start index and count are specified.")
        For Each sc In  scValues
            loc = cat.LastIndexOf(CapitalAWithRing, cat.Length - 1, cat.Length, sc)
            Console.WriteLine(resultFmt, sc, loc)
        Next sc
        
        ' Search using different values of StringComparsion. Specify the 
        ' start index. 
        Console.WriteLine(vbCrLf & "Part 2: Start index is specified.")
        For Each sc In  scValues
            loc = cat.LastIndexOf(CapitalAWithRing, cat.Length - 1, sc)
            Console.WriteLine(resultFmt, sc, loc)
        Next sc
        
        ' Search using different values of StringComparsion. 
        Console.WriteLine(vbCrLf & "Part 3: Neither start index nor count is specified.")
        For Each sc In  scValues
            loc = cat.LastIndexOf(CapitalAWithRing, sc)
            Console.WriteLine(resultFmt, sc, loc)
        Next sc
    
    End Sub
End Class

'
'Note: This code example was executed on a console whose user interface 
'culture is "en-US" (English-United States).
'
'This code example produces the following results:
'
'Find the last occurrence of a character using different values of StringComparison.
'The current culture is "en-US" - English (United States).
'Search for the string "Å" in the string "A Cheshire ca°t"
'
'Part 1: Start index and count are specified.
'Comparison: CurrentCulture               Location:  -1
'Comparison: CurrentCultureIgnoreCase     Location:  12
'Comparison: InvariantCulture             Location:  -1
'Comparison: InvariantCultureIgnoreCase   Location:  12
'Comparison: Ordinal                      Location:  -1
'Comparison: OrdinalIgnoreCase            Location:  -1
'
'Part 2: Start index is specified.
'Comparison: CurrentCulture               Location:  -1
'Comparison: CurrentCultureIgnoreCase     Location:  12
'Comparison: InvariantCulture             Location:  -1
'Comparison: InvariantCultureIgnoreCase   Location:  12
'Comparison: Ordinal                      Location:  -1
'Comparison: OrdinalIgnoreCase            Location:  -1
'
'Part 3: Neither start index nor count is specified.
'Comparison: CurrentCulture               Location:  -1
'Comparison: CurrentCultureIgnoreCase     Location:  12
'Comparison: InvariantCulture             Location:  -1
'Comparison: InvariantCultureIgnoreCase   Location:  12
'Comparison: Ordinal                      Location:  -1
'Comparison: OrdinalIgnoreCase            Location:  -1
'

Комментарии

Нумерация индексов начинается с нуля.Index numbering starts from zero. То есть первый символ в строке имеет нулевой индекс, а последний — в Length-1.That is, the first character in the string is at index zero and the last is at Length - 1.

Параметр comparisonType определяет Поиск параметра value, используя текущий или инвариантный язык и региональные параметры, с учетом регистра или без учета регистра, а также с помощью правил сравнения по словам или порядковому номеру.The comparisonType parameter specifies to search for the value parameter using the current or invariant culture, using a case-sensitive or case-insensitive search, and using word or ordinal comparison rules.

Поиск начинается с последней позиции символа данного экземпляра и продолжается в направлении к началу до тех пор, пока не будет найден value или не будет проверен первый символ.The search begins at the last character position of this instance and proceeds backward toward the beginning until either value is found or the first character position has been examined.

Примечания для тех, кто вызывает этот метод

Наборы символов содержат игнорируемые символы, то есть символы, которые не учитываются при выполнении лингвистического сравнения или сравнения с учетом языка и региональных параметров.Character sets include ignorable characters, which are characters that are not considered when performing a linguistic or culture-sensitive comparison. Если при поиске с учетом языка и региональных параметров (то есть, если параметр options не имеет значение Ordinal или OrdinalIgnoreCase) параметр value содержит игнорируемый символ, результат аналогичен поиску с удаленным этим символом.In a culture-sensitive search (that is, if options is not Ordinal or OrdinalIgnoreCase), if value contains an ignorable character, the result is equivalent to searching with that character removed. Если value состоит только из одного или нескольких игнорируемых символов, метод LastIndexOf(String, StringComparison) всегда возвращает значение Length-1, которое представляет последнюю позиции индекса в текущем экземпляре.If value consists only of one or more ignorable characters, the LastIndexOf(String, StringComparison) method always returns Length - 1, which represents the last index position in the current instance.

В следующем примере метод LastIndexOf(String, StringComparison) используется для поиска трех подстрок (мягкий дефис (U + 00AD), мягкий дефис, за которым следует "n", и мягкий дефис, за которым следует "m") в двух строках.In the following example, the LastIndexOf(String, StringComparison) method is used to find three substrings (a soft hyphen (U+00AD), a soft hyphen followed by "n", and a soft hyphen followed by "m") in two strings. Только одна из строк содержит мягкий перенос.Only one of the strings contains a soft hyphen. Если пример выполняется в .NET Framework 4.NET Framework 4 или более поздней версии, поскольку мягкий дефис является игнорируемым, то поиск с учетом языка и региональных параметров возвращает то же значение, которое возвращается, если мягкий дефис не был включен в строку поиска.If the example is run on the .NET Framework 4.NET Framework 4 or later, because the soft hyphen is an ignorable character, a culture-sensitive search returns the same value that it would return if the soft hyphen were not included in the search string. Однако порядковый поиск по порядковому номеру успешно находит мягкий дефис в одной строке и сообщает, что он отсутствует во второй строке.An ordinal search, however, successfully finds the soft hyphen in one string and reports that it is absent from the second string.

[! код-CSharpSystem. String. LastIndexOf # 26] [! код-VBSystem. String. LastIndexOf # 26][!code-csharpSystem.String.LastIndexOf#26] [!code-vbSystem.String.LastIndexOf#26]

LastIndexOf(Char)

Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанного символа Юникода в пределах данного экземпляра.Reports the zero-based index position of the last occurrence of a specified Unicode character within this instance.

public:
 int LastIndexOf(char value);
public int LastIndexOf (char value);
member this.LastIndexOf : char -> int
Public Function LastIndexOf (value As Char) As Integer

Параметры

value
Char

Знак Юникода, который необходимо найти.The Unicode character to seek.

Возвраты

Отсчитываемое от нуля значение индекса параметра value, если этот знак найден; в противном случае — значение -1.The zero-based index position of value if that character is found, or -1 if it is not.

Примеры

В следующем примере определяется метод ExtractFilename, который использует метод LastIndexOf(Char) для поиска последнего знака разделителя каталога в строке и извлечения имени файла строки.The following example defines an ExtractFilename method that uses the LastIndexOf(Char) method to find the last directory separator character in a string and to extract the string's file name. Если файл существует, метод возвращает имя файла без пути.If the file exists, the method returns the file name without its path.

using System;
using System.IO;

public class TestLastIndexOf
{
   public static void Main()
   {
      string filename;
      
      filename = ExtractFilename(@"C:\temp\");
      Console.WriteLine("{0}", String.IsNullOrEmpty(filename) ? "<none>" : filename);
      
      filename = ExtractFilename(@"C:\temp\delegate.txt"); 
      Console.WriteLine("{0}", String.IsNullOrEmpty(filename) ? "<none>" : filename);

      filename = ExtractFilename("delegate.txt");      
      Console.WriteLine("{0}", String.IsNullOrEmpty(filename) ? "<none>" : filename);
      
      filename = ExtractFilename(@"C:\temp\notafile.txt");
      Console.WriteLine("{0}", String.IsNullOrEmpty(filename) ? "<none>" : filename);
   }

   public static string ExtractFilename(string filepath)
   {
      // If path ends with a "\", it's a path only so return String.Empty.
      if (filepath.Trim().EndsWith(@"\"))
         return String.Empty;
      
      // Determine where last backslash is.
      int position = filepath.LastIndexOf('\\');
      // If there is no backslash, assume that this is a filename.
      if (position == -1)
      {
         // Determine whether file exists in the current directory.
         if (File.Exists(Environment.CurrentDirectory + Path.DirectorySeparatorChar + filepath)) 
            return filepath;
         else
            return String.Empty;
      }
      else
      {
         // Determine whether file exists using filepath.
         if (File.Exists(filepath))
            // Return filename without file path.
            return filepath.Substring(position + 1);
         else
            return String.Empty;
      }
   }
}
Imports System.IO

Public Module Test
   Public Sub Main()
      Dim filename As String 
      
      filename = ExtractFilename("C:\temp\")
      Console.WriteLine("{0}", IIf(String.IsNullOrEmpty(fileName), "<none>", filename))
      
      filename = ExtractFilename("C:\temp\delegate.txt") 
      Console.WriteLine("{0}", IIf(String.IsNullOrEmpty(fileName), "<none>", filename))

      filename = ExtractFilename("delegate.txt")      
      Console.WriteLine("{0}", IIf(String.IsNullOrEmpty(fileName), "<none>", filename))
      
      filename = ExtractFilename("C:\temp\notafile.txt")
      Console.WriteLine("{0}", IIf(String.IsNullOrEmpty(fileName), "<none>", filename))
   End Sub
   
   Public Function ExtractFilename(filepath As String) As String
      ' If path ends with a "\", it's a path only so return String.Empty.
      If filepath.Trim().EndsWith("\") Then Return String.Empty
      
      ' Determine where last backslash is.
      Dim position As Integer = filepath.LastIndexOf("\"c)
      ' If there is no backslash, assume that this is a filename.
      If position = -1 Then
         ' Determine whether file exists in the current directory.
         If File.Exists(Environment.CurrentDirectory + Path.DirectorySeparatorChar + filepath) Then
            Return filepath
         Else
            Return String.Empty
         End If
      Else
         ' Determine whether file exists using filepath.
         If File.Exists(filepath) Then
            ' Return filename without file path.
            Return filepath.Substring(position + 1)
         Else
            Return String.Empty
         End If                     
      End If
   End Function
End Module 
' The example displays the following output:
'        delegate.txt

Комментарии

Нумерация индексов начинается с нуля.Index numbering starts from zero. То есть первый символ в строке имеет нулевой индекс, а последний — в Length-1.That is, the first character in the string is at index zero and the last is at Length - 1.

Этот метод начинает поиск с последней позиции символа данного экземпляра и переходит назад к началу до тех пор, пока не обнаружит value или не проверит первую знак позиции.This method begins searching at the last character position of this instance and proceeds backward toward the beginning until either value is found or the first character position has been examined. При поиске учитывается регистр.The search is case-sensitive.

Этот метод выполняет поиск по порядковому номеру (без учета языка и региональных параметров), где символ считается эквивалентным другому символу, только если их скалярные значения в Юникоде одинаковы.This method performs an ordinal (culture-insensitive) search, where a character is considered equivalent to another character only if their Unicode scalar values are the same. Чтобы выполнить поиск с учетом языка и региональных параметров, используйте метод CompareInfo.LastIndexOf, где скалярное значение Юникода, представляющее составной символ, например лигатура "Æ" (U + 00C6), может считаться эквивалентным любому вхождению компонентов символа в правильном последовательность, например "AE" (U + 0041, U + 0045), в зависимости от языка и региональных параметров.To perform a culture-sensitive search, use the CompareInfo.LastIndexOf method, where a Unicode scalar value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture.

Дополнительно

LastIndexOf(Char, Int32)

Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанного символа Юникода в пределах данного экземпляра.Reports the zero-based index position of the last occurrence of a specified Unicode character within this instance. Поиск начинается с указанной позиции символа и выполняется в обратном направлении до начала строки.The search starts at a specified character position and proceeds backward toward the beginning of the string.

public:
 int LastIndexOf(char value, int startIndex);
public int LastIndexOf (char value, int startIndex);
member this.LastIndexOf : char * int -> int
Public Function LastIndexOf (value As Char, startIndex As Integer) As Integer

Параметры

value
Char

Знак Юникода, который необходимо найти.The Unicode character to seek.

startIndex
Int32

Начальное положение поиска.The starting position of the search. Поиск выполняется от индекса, заданного параметром startIndex, до начала данного экземпляра.The search proceeds from startIndex toward the beginning of this instance.

Возвраты

Отсчитываемая от нуля позиция параметра value в индексе, если этот символ найден, или значение -1, если он не найден или текущий экземпляр равен Empty.The zero-based index position of value if that character is found, or -1 if it is not found or if the current instance equals Empty.

Исключения

Текущий экземпляр не равен Empty, а startIndex меньше нуля либо равно или превышает длину этого экземпляра.The current instance does not equal Empty, and startIndex is less than zero or greater than or equal to the length of this instance.

Примеры

В следующем примере выполняется поиск индекса всех вхождений символа в строке, начиная с конца строки до начала строки.The following example finds the index of all occurrences of a character in a string, working from the end of the string to the start of the string.

// Sample for String::LastIndexOf(Char, Int32)
using namespace System;
int main()
{
   String^ br1 = "0----+----1----+----2----+----3----+----4----+----5----+----6----+-";
   String^ br2 = "0123456789012345678901234567890123456789012345678901234567890123456";
   String^ str = "Now is the time for all good men to come to the aid of their party.";
   int start;
   int at;
   start = str->Length - 1;
   Console::WriteLine( "All occurrences of 't' from position {0} to 0.", start );
   Console::WriteLine( "{0}\n{1}\n{2}\n", br1, br2, str );
   Console::Write( "The letter 't' occurs at position(s): " );
   at = 0;
   while ( (start > -1) && (at > -1) )
   {
      at = str->LastIndexOf( 't', start );
      if ( at > -1 )
      {
         Console::Write( " {0} ", at );
         start = at - 1;
      }
   }
}

/*
This example produces the following results:
All occurrences of 't' from position 66 to 0.
0----+----1----+----2----+----3----+----4----+----5----+----6----+-
0123456789012345678901234567890123456789012345678901234567890123456
Now is the time for all good men to come to the aid of their party.

The letter 't' occurs at position(s): 64 55 44 41 33 11 7
*/
// Sample for String.LastIndexOf(Char, Int32)
using System;

class Sample {
    public static void Main() {

    string br1 = "0----+----1----+----2----+----3----+----4----+----5----+----6----+-";
    string br2 = "0123456789012345678901234567890123456789012345678901234567890123456";
    string str = "Now is the time for all good men to come to the aid of their party.";
    int start;
    int at;

    start = str.Length-1;
    Console.WriteLine("All occurrences of 't' from position {0} to 0.", start);
    Console.WriteLine("{1}{0}{2}{0}{3}{0}", Environment.NewLine, br1, br2, str);
    Console.Write("The letter 't' occurs at position(s): ");

    at = 0;
    while((start > -1) && (at > -1))
        {
        at = str.LastIndexOf('t', start);
        if (at > -1) 
            {
            Console.Write("{0} ", at);
            start = at - 1;
            }
        }
    Console.Write("{0}{0}{0}", Environment.NewLine);
    }
}
/*
This example produces the following results:
All occurrences of 't' from position 66 to 0.
0----+----1----+----2----+----3----+----4----+----5----+----6----+-
0123456789012345678901234567890123456789012345678901234567890123456
Now is the time for all good men to come to the aid of their party.

The letter 't' occurs at position(s): 64 55 44 41 33 11 7
*/
' Sample for String.LastIndexOf(Char, Int32)
Imports System 
 _

Class Sample
   
   Public Shared Sub Main()
      
      Dim br1 As String = "0----+----1----+----2----+----3----+----4----+----5----+----6----+-"
      Dim br2 As String = "0123456789012345678901234567890123456789012345678901234567890123456"
      Dim str As String = "Now is the time for all good men to come to the aid of their party."
      Dim start As Integer
      Dim at As Integer
      
      start = str.Length - 1
      Console.WriteLine("All occurrences of 't' from position {0} to 0.", start)
      Console.WriteLine("{1}{0}{2}{0}{3}{0}", Environment.NewLine, br1, br2, str)
      Console.Write("The letter 't' occurs at position(s): ")
      
      at = 0
      While start > - 1 And at > - 1
         at = str.LastIndexOf("t"c, start)
         If at > - 1 Then
            Console.Write("{0} ", at)
            start = at - 1
         End If
      End While
      Console.Write("{0}{0}{0}", Environment.NewLine)
   End Sub
End Class
'
'This example produces the following results:
'All occurrences of 't' from position 66 to 0.
'0----+----1----+----2----+----3----+----4----+----5----+----6----+-
'0123456789012345678901234567890123456789012345678901234567890123456
'Now is the time for all good men to come to the aid of their party.
'
'The letter 't' occurs at position(s): 64 55 44 41 33 11 7
'

Комментарии

Нумерация индексов начинается с нуля.Index numbering starts from zero. То есть первый символ в строке находится в нулевом индексе, а последний — в Length-1. Этот метод начинает поиск с позиции startIndex в этом экземпляре и переходит назад к началу текущего экземпляра до тех пор, пока не будет найден value. или была проверена первая позиции символа.That is, the first character in the string is at index zero and the last is at Length - 1.This method begins searching at the startIndex character position of this instance and proceeds backward toward the beginning of the current instance until either value is found or the first character position has been examined. Например, если startIndexLength-1, метод ищет каждый символ из последнего символа в строке в начале.For example, if startIndex is Length - 1, the method searches every character from the last character in the string to the beginning. При поиске учитывается регистр.The search is case-sensitive.

Этот метод выполняет поиск по порядковому номеру (без учета языка и региональных параметров), где символ считается эквивалентным другому символу, только если их скалярные значения в Юникоде одинаковы.This method performs an ordinal (culture-insensitive) search, where a character is considered equivalent to another character only if their Unicode scalar values are the same. Чтобы выполнить поиск с учетом языка и региональных параметров, используйте метод CompareInfo.LastIndexOf, где скалярное значение Юникода, представляющее составной символ, например лигатура "Æ" (U + 00C6), может считаться эквивалентным любому вхождению компонентов символа в правильном последовательность, например "AE" (U + 0041, U + 0045), в зависимости от языка и региональных параметров.To perform a culture-sensitive search, use the CompareInfo.LastIndexOf method, where a Unicode scalar value representing a precomposed character, such as the ligature "Æ" (U+00C6), might be considered equivalent to any occurrence of the character's components in the correct sequence, such as "AE" (U+0041, U+0045), depending on the culture.

Дополнительно

LastIndexOf(String)

Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанной строки в данном экземпляре.Reports the zero-based index position of the last occurrence of a specified string within this instance.

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

Параметры

value
String

Строка для поиска.The string to seek.

Возвраты

Положение в отсчитываемом от нуля индексе параметра value, если эта строка найдена, или значение -1, если она не найдена.The zero-based starting index position of value if that string is found, or -1 if it is not. Если параметр value равен Empty, возвращаемым значением является последняя позиция в индексе данного экземпляра.If value is Empty, the return value is the last index position in this instance.

Исключения

Свойство value имеет значение null.value is null.

Примеры

Следующий пример удаляет открывающие и закрывающие HTML-теги из строки, если теги начинаются и завершают строку.The following example removes opening and closing HTML tags from a string if the tags begin and end the string. Если строка заканчивается закрывающей скобкой (">"), в примере используется метод LastIndexOf для нахождение начала закрывающего тега.If a string ends with a closing bracket character (">"), the example uses the LastIndexOf method to locate the start of the end tag.

using System;

public class Example 
{
   public static void Main() 
   {
      string[] strSource = { "<b>This is bold text</b>", "<H1>This is large Text</H1>",
               "<b><i><font color=green>This has multiple tags</font></i></b>",
               "<b>This has <i>embedded</i> tags.</b>",
               "This line ends with a greater than symbol and should not be modified>" };

      // Strip HTML start and end tags from each string if they are present.
      foreach (string s in strSource)
      {
         Console.WriteLine("Before: " + s);
         string item = s;
         // Use EndsWith to find a tag at the end of the line.
         if (item.Trim().EndsWith(">")) 
         {
            // Locate the opening tag.
            int endTagStartPosition = item.LastIndexOf("</");
            // Remove the identified section, if it is valid.
            if (endTagStartPosition >= 0 )
               item = item.Substring(0, endTagStartPosition);

            // Use StartsWith to find the opening tag.
            if (item.Trim().StartsWith("<"))
            {
               // Locate the end of opening tab.
               int openTagEndPosition = item.IndexOf(">");
               // Remove the identified section, if it is valid.
               if (openTagEndPosition >= 0)
                  item = item.Substring(openTagEndPosition + 1);
            }      
         }
         // Display the trimmed string.
         Console.WriteLine("After: " + item);
         Console.WriteLine();
      }                   
   }
}
// The example displays the following output:
//    Before: <b>This is bold text</b>
//    After: This is bold text
//    
//    Before: <H1>This is large Text</H1>
//    After: This is large Text
//    
//    Before: <b><i><font color=green>This has multiple tags</font></i></b>
//    After: <i><font color=green>This has multiple tags</font></i>
//    
//    Before: <b>This has <i>embedded</i> tags.</b>
//    After: This has <i>embedded</i> tags.
//    
//    Before: This line ends with a greater than symbol and should not be modified>
//    After: This line ends with a greater than symbol and should not be modified>
Module Example
   Public Sub Main()
      Dim strSource As String() = { "<b>This is bold text</b>", _
                    "<H1>This is large Text</H1>", _
                    "<b><i><font color=green>This has multiple tags</font></i></b>", _
                    "<b>This has <i>embedded</i> tags.</b>", _
                    "This line ends with a greater than symbol and should not be modified>" }

      ' Strip HTML start and end tags from each string if they are present.
      For Each s As String In strSource
         Console.WriteLine("Before: " + s)
         ' Use EndsWith to find a tag at the end of the line.
         If s.Trim().EndsWith(">") Then 
            ' Locate the opening tag.
            Dim endTagStartPosition As Integer = s.LastIndexOf("</")
            ' Remove the identified section if it is valid.
            If endTagStartPosition >= 0 Then
               s = s.Substring(0, endTagStartPosition)
            End If
            
            ' Use StartsWith to find the opening tag.
            If s.Trim().StartsWith("<") Then
               ' Locate the end of opening tab.
               Dim openTagEndPosition As Integer = s.IndexOf(">")
               ' Remove the identified section if it is valid.
               If openTagEndPosition >= 0 Then
                  s = s.Substring(openTagEndPosition + 1)
               End If   
            End If      
         End If
         ' Display the trimmed string.
         Console.WriteLine("After: " + s)
         Console.WriteLine()
      Next                   
   End Sub
End Module
' The example displays the following output:
'    Before: <b>This is bold text</b>
'    After: This is bold text
'    
'    Before: <H1>This is large Text</H1>
'    After: This is large Text
'    
'    Before: <b><i><font color=green>This has multiple tags</font></i></b>
'    After: <i><font color=green>This has multiple tags</font></i>
'    
'    Before: <b>This has <i>embedded</i> tags.</b>
'    After: This has <i>embedded</i> tags.
'    
'    Before: This line ends with a greater than symbol and should not be modified>
'    After: This line ends with a greater than symbol and should not be modified>

Комментарии

Нумерация индексов начинается с нуля.Index numbering starts from zero. То есть первый символ в строке имеет нулевой индекс, а последний — в Length-1.That is, the first character in the string is at index zero and the last is at Length - 1.

Поиск начинается с последней позиции символа данного экземпляра и продолжается в направлении к началу до тех пор, пока не будет найден value или не будет проверен первый символ.The search begins at the last character position of this instance and proceeds backward toward the beginning until either value is found or the first character position has been examined.

Этот метод выполняет поиск по словам (с учетом регистра и с учетом языка и региональных параметров), используя текущий язык и региональные параметры.This method performs a word (case-sensitive and culture-sensitive) search using the current culture.

Наборы символов содержат игнорируемые символы, то есть символы, которые не учитываются при выполнении лингвистического сравнения или сравнения с учетом языка и региональных параметров.Character sets include ignorable characters, which are characters that are not considered when performing a linguistic or culture-sensitive comparison. Если при поиске с учетом языка и региональных параметров параметр value содержит игнорируемый символ, результат аналогичен поиску с удаленным этим символом.In a culture-sensitive search, if value contains an ignorable character, the result is equivalent to searching with that character removed. Если value состоит только из одного или нескольких игнорируемых символов, метод LastIndexOf(String) всегда возвращает значение String.Length-1, которое представляет последнюю позиции индекса в текущем экземпляре.If value consists only of one or more ignorable characters, the LastIndexOf(String) method always returns String.Length - 1, which represents the last index position in the current instance. В следующем примере метод LastIndexOf(String) используется для поиска трех подстрок (мягкий дефис (U + 00AD), мягкий дефис, за которым следует "n", и мягкий дефис, за которым следует "m") в двух строках.In the following example, the LastIndexOf(String) method is used to find three substrings (a soft hyphen (U+00AD), a soft hyphen followed by "n", and a soft hyphen followed by "m") in two strings. Только одна из строк содержит мягкий перенос.Only one of the strings contains a soft hyphen. Если пример выполняется в .NET Framework 4.NET Framework 4 или более поздней версии, в каждом случае, поскольку мягкий дефис является проигнорированным символом, результат будет таким же, как если бы мягкий перенос не включался в value.If the example is run on the .NET Framework 4.NET Framework 4 or later, in each case, because the soft hyphen is an ignorable character, the result is the same as if the soft hyphen had not been included in value. При поиске только мягкого дефиса метод возвращает 6 и 5.When searching for a soft hyphen only, the method returns 6 and 5. Эти значения соответствуют индексу последнего символа в двух строках.These values correspond to the index of the last character in the two strings.

using System;

public class Example
{
   public static void Main()
   {
      string s1 = "ani\u00ADmal";
      string s2 = "animal";
      
      // Find the index of the last soft hyphen.
      Console.WriteLine(s1.LastIndexOf("\u00AD"));
      Console.WriteLine(s2.LastIndexOf("\u00AD"));
      
      // Find the index of the last soft hyphen followed by "n".
      Console.WriteLine(s1.LastIndexOf("\u00ADn"));
      Console.WriteLine(s2.LastIndexOf("\u00ADn"));
      
      // Find the index of the last soft hyphen followed by "m".
      Console.WriteLine(s1.LastIndexOf("\u00ADm"));
      Console.WriteLine(s2.LastIndexOf("\u00ADm"));
   }
}
// The example displays the following output:
//       6
//       5
//       1
//       1
//       4
//       3
Module Example
   Public Sub Main()
      Dim softHyphen As String = ChrW(&h00AD)
      Dim s1 As String = "ani" + softHyphen + "mal"
      Dim s2 As String = "animal"
      
      ' Find the index of the last soft hyphen.
      Console.WriteLine(s1.LastIndexOf(softHyphen))
      Console.WriteLine(s2.LastIndexOf(softHyphen))
      
      ' Find the index of the last soft hyphen followed by "n".
      Console.WriteLine(s1.LastIndexOf(softHyphen + "n"))
      Console.WriteLine(s2.LastIndexOf(softHyphen + "n"))
      
      ' Find the index of the last soft hyphen followed by "m".
      Console.WriteLine(s1.LastIndexOf(softHyphen + "m"))
      Console.WriteLine(s2.LastIndexOf(softHyphen + "m"))
   End Sub
End Module
' The example displays the following output:
'       6
'       5
'       1
'       1
'       4
'       3

Примечания для тех, кто вызывает этот метод

Как описано в статье рекомендации по использованию строк, рекомендуется избегать вызова методов сравнения строк, которые заменяют значения по умолчанию, а вызывают методы, для которых требуется явно указать параметры.As explained in Best Practices for Using Strings, we recommend that you avoid calling string comparison methods that substitute default values and instead call methods that require parameters to be explicitly specified. Чтобы найти последний индекс подстроки в экземпляре строки с помощью правил сравнения текущего языка и региональных параметров, вызовите перегрузку метода LastIndexOf(String, StringComparison) со значением CurrentCulture для своего параметра comparisonType.To find the last index of a substring within a string instance by using the comparison rules of the current culture, call the LastIndexOf(String, StringComparison) method overload with a value of CurrentCulture for its comparisonType parameter.

Дополнительно

LastIndexOf(String, Int32, Int32, StringComparison)

Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанной строки в данном экземпляре.Reports the zero-based index position of the last occurrence of a specified string within this instance. Поиск начинается с указанной позиции символа и выполняется в обратном направлении до начала строки для заданного числа позиций символов.The search starts at a specified character position and proceeds backward toward the beginning of the string for the specified number of character positions. Параметр определяет тип сравнения для выполнения во время поиска заданной строки.A parameter specifies the type of comparison to perform when searching for the specified string.

public:
 int LastIndexOf(System::String ^ value, int startIndex, int count, StringComparison comparisonType);
public int LastIndexOf (string value, int startIndex, int count, StringComparison comparisonType);
member this.LastIndexOf : string * int * int * StringComparison -> int
Public Function LastIndexOf (value As String, startIndex As Integer, count As Integer, comparisonType As StringComparison) As Integer

Параметры

value
String

Строка для поиска.The string to seek.

startIndex
Int32

Позиция, с которой начинается поиск.The search starting position. Поиск выполняется от индекса, заданного параметром startIndex, до начала данного экземпляра.The search proceeds from startIndex toward the beginning of this instance.

count
Int32

Количество позиций знаков для проверки.The number of character positions to examine.

comparisonType
StringComparison

Одно из значений перечисления, определяющее правила поиска.One of the enumeration values that specifies the rules for the search.

Возвраты

Отсчитываемая от нуля начальная позиция индекса параметра value, если эта строка найдена, или значение -1, если строка не найдена или текущий экземпляр равен Empty.The zero-based starting index position of the value parameter if that string is found, or -1 if it is not found or if the current instance equals Empty. Если значение параметра value равно Empty, возвращаемым значением является наименьшее значение из startIndex и последнего значения индекса в данном экземпляре.If value is Empty, the return value is the smaller of startIndex and the last index position in this instance.

Исключения

valuenull.value is null.

count является отрицательным значением.count is negative.

- или --or- Текущий экземпляр не равен Empty, а startIndex является отрицательным.The current instance does not equal Empty, and startIndex is negative.

- или --or- Текущий экземпляр не равен Empty, а startIndex превышает длину этого экземпляра.The current instance does not equal Empty, and startIndex is greater than the length of this instance.

- или --or- Текущий экземпляр не равен Empty, а startIndexcount + 1 указывает позицию вне пределов данного экземпляра.The current instance does not equal Empty, and startIndex + 1 - count specifies a position that is not within this instance.

- или --or- Текущий экземпляр равен Empty, а start меньше -1 или больше нуля.The current instance equals Empty and start is less than -1 or greater than zero.

- или --or- Текущий экземпляр равен Empty, а count больше 1.The current instance equals Empty and count is greater than 1.

comparisonType не является допустимым значением StringComparison.comparisonType is not a valid StringComparison value.

Примеры

В следующем примере показаны три перегрузки метода LastIndexOf, которые находят Последнее вхождение строки в другой строке, используя различные значения перечисления StringComparison.The following example demonstrates three overloads of the LastIndexOf method that find the last occurrence of a string within another string using different values of the StringComparison enumeration.

// This code example demonstrates the 
// System.String.LastIndexOf(String, ..., StringComparison) methods.

using System;
using System.Threading;
using System.Globalization;

class Sample 
{
    public static void Main() 
    {
    string intro = "Find the last occurrence of a character using different " + 
                   "values of StringComparison.";
    string resultFmt = "Comparison: {0,-28} Location: {1,3}";

// Define a string to search for.
// U+00c5 = LATIN CAPITAL LETTER A WITH RING ABOVE
    string CapitalAWithRing = "\u00c5"; 

// Define a string to search. 
// The result of combining the characters LATIN SMALL LETTER A and COMBINING 
// RING ABOVE (U+0061, U+030a) is linguistically equivalent to the character 
// LATIN SMALL LETTER A WITH RING ABOVE (U+00e5).
    string cat = "A Cheshire c" + "\u0061\u030a" + "t";
    int loc = 0;
    StringComparison[] scValues = {
        StringComparison.CurrentCulture,
        StringComparison.CurrentCultureIgnoreCase,
        StringComparison.InvariantCulture,
        StringComparison.InvariantCultureIgnoreCase,
        StringComparison.Ordinal,
        StringComparison.OrdinalIgnoreCase };

// Clear the screen and display an introduction.
    Console.Clear();
    Console.WriteLine(intro);

// Display the current culture because culture affects the result. For example, 
// try this code example with the "sv-SE" (Swedish-Sweden) culture.

    Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
    Console.WriteLine("The current culture is \"{0}\" - {1}.", 
                       Thread.CurrentThread.CurrentCulture.Name,
                       Thread.CurrentThread.CurrentCulture.DisplayName);

// Display the string to search for and the string to search.
    Console.WriteLine("Search for the string \"{0}\" in the string \"{1}\"", 
                       CapitalAWithRing, cat);
    Console.WriteLine();

// Note that in each of the following searches, we look for 
// LATIN CAPITAL LETTER A WITH RING ABOVE in a string that contains 
// LATIN SMALL LETTER A WITH RING ABOVE. A result value of -1 indicates 
// the string was not found.
// Search using different values of StringComparsion. Specify the start 
// index and count. 

    Console.WriteLine("Part 1: Start index and count are specified.");
    foreach (StringComparison sc in scValues)
        {
        loc = cat.LastIndexOf(CapitalAWithRing, cat.Length-1, cat.Length, sc);
        Console.WriteLine(resultFmt, sc, loc);
        }

// Search using different values of StringComparsion. Specify the 
// start index. 
    Console.WriteLine("\nPart 2: Start index is specified.");
    foreach (StringComparison sc in scValues)
        {
        loc = cat.LastIndexOf(CapitalAWithRing, cat.Length-1, sc);
        Console.WriteLine(resultFmt, sc, loc);
        }

// Search using different values of StringComparsion. 
    Console.WriteLine("\nPart 3: Neither start index nor count is specified.");
    foreach (StringComparison sc in scValues)
        {
        loc = cat.LastIndexOf(CapitalAWithRing, sc);
        Console.WriteLine(resultFmt, sc, loc);
        }
    }
}

/*
Note: This code example was executed on a console whose user interface 
culture is "en-US" (English-United States).

This code example produces the following results:

Find the last occurrence of a character using different values of StringComparison.
The current culture is "en-US" - English (United States).
Search for the string "Å" in the string "A Cheshire ca°t"

Part 1: Start index and count are specified.
Comparison: CurrentCulture               Location:  -1
Comparison: CurrentCultureIgnoreCase     Location:  12
Comparison: InvariantCulture             Location:  -1
Comparison: InvariantCultureIgnoreCase   Location:  12
Comparison: Ordinal                      Location:  -1
Comparison: OrdinalIgnoreCase            Location:  -1

Part 2: Start index is specified.
Comparison: CurrentCulture               Location:  -1
Comparison: CurrentCultureIgnoreCase     Location:  12
Comparison: InvariantCulture             Location:  -1
Comparison: InvariantCultureIgnoreCase   Location:  12
Comparison: Ordinal                      Location:  -1
Comparison: OrdinalIgnoreCase            Location:  -1

Part 3: Neither start index nor count is specified.
Comparison: CurrentCulture               Location:  -1
Comparison: CurrentCultureIgnoreCase     Location:  12
Comparison: InvariantCulture             Location:  -1
Comparison: InvariantCultureIgnoreCase   Location:  12
Comparison: Ordinal                      Location:  -1
Comparison: OrdinalIgnoreCase            Location:  -1

*/
' This code example demonstrates the 
' System.String.LastIndexOf(String, ..., StringComparison) methods.

Imports System.Threading
Imports System.Globalization

Class Sample
    Public Shared Sub Main() 
        Dim intro As String = "Find the last occurrence of a character using different " & _
                              "values of StringComparison."
        Dim resultFmt As String = "Comparison: {0,-28} Location: {1,3}"
        
        ' Define a string to search for.
        ' U+00c5 = LATIN CAPITAL LETTER A WITH RING ABOVE
        Dim CapitalAWithRing As String = "Å"
        
        ' Define a string to search. 
        ' The result of combining the characters LATIN SMALL LETTER A and COMBINING 
        ' RING ABOVE (U+0061, U+030a) is linguistically equivalent to the character 
        ' LATIN SMALL LETTER A WITH RING ABOVE (U+00e5).
        Dim cat As String = "A Cheshire c" & "å" & "t"
        Dim loc As Integer = 0
        Dim scValues As StringComparison() =  { _
                        StringComparison.CurrentCulture, _
                        StringComparison.CurrentCultureIgnoreCase, _
                        StringComparison.InvariantCulture, _
                        StringComparison.InvariantCultureIgnoreCase, _
                        StringComparison.Ordinal, _
                        StringComparison.OrdinalIgnoreCase }
        Dim sc As StringComparison
        
        ' Clear the screen and display an introduction.
        Console.Clear()
        Console.WriteLine(intro)
        
        ' Display the current culture because culture affects the result. For example, 
        ' try this code example with the "sv-SE" (Swedish-Sweden) culture.
        Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
        Console.WriteLine("The current culture is ""{0}"" - {1}.", _
                           Thread.CurrentThread.CurrentCulture.Name, _
                           Thread.CurrentThread.CurrentCulture.DisplayName)
        
        ' Display the string to search for and the string to search.
        Console.WriteLine("Search for the string ""{0}"" in the string ""{1}""", _
                           CapitalAWithRing, cat)
        Console.WriteLine()
        
        ' Note that in each of the following searches, we look for 
        ' LATIN CAPITAL LETTER A WITH RING ABOVE in a string that contains 
        ' LATIN SMALL LETTER A WITH RING ABOVE. A result value of -1 indicates 
        ' the string was not found.
        ' Search using different values of StringComparsion. Specify the start 
        ' index and count. 
        Console.WriteLine("Part 1: Start index and count are specified.")
        For Each sc In  scValues
            loc = cat.LastIndexOf(CapitalAWithRing, cat.Length - 1, cat.Length, sc)
            Console.WriteLine(resultFmt, sc, loc)
        Next sc
        
        ' Search using different values of StringComparsion. Specify the 
        ' start index. 
        Console.WriteLine(vbCrLf & "Part 2: Start index is specified.")
        For Each sc In  scValues
            loc = cat.LastIndexOf(CapitalAWithRing, cat.Length - 1, sc)
            Console.WriteLine(resultFmt, sc, loc)
        Next sc
        
        ' Search using different values of StringComparsion. 
        Console.WriteLine(vbCrLf & "Part 3: Neither start index nor count is specified.")
        For Each sc In  scValues
            loc = cat.LastIndexOf(CapitalAWithRing, sc)
            Console.WriteLine(resultFmt, sc, loc)
        Next sc
    
    End Sub
End Class

'
'Note: This code example was executed on a console whose user interface 
'culture is "en-US" (English-United States).
'
'This code example produces the following results:
'
'Find the last occurrence of a character using different values of StringComparison.
'The current culture is "en-US" - English (United States).
'Search for the string "Å" in the string "A Cheshire ca°t"
'
'Part 1: Start index and count are specified.
'Comparison: CurrentCulture               Location:  -1
'Comparison: CurrentCultureIgnoreCase     Location:  12
'Comparison: InvariantCulture             Location:  -1
'Comparison: InvariantCultureIgnoreCase   Location:  12
'Comparison: Ordinal                      Location:  -1
'Comparison: OrdinalIgnoreCase            Location:  -1
'
'Part 2: Start index is specified.
'Comparison: CurrentCulture               Location:  -1
'Comparison: CurrentCultureIgnoreCase     Location:  12
'Comparison: InvariantCulture             Location:  -1
'Comparison: InvariantCultureIgnoreCase   Location:  12
'Comparison: Ordinal                      Location:  -1
'Comparison: OrdinalIgnoreCase            Location:  -1
'
'Part 3: Neither start index nor count is specified.
'Comparison: CurrentCulture               Location:  -1
'Comparison: CurrentCultureIgnoreCase     Location:  12
'Comparison: InvariantCulture             Location:  -1
'Comparison: InvariantCultureIgnoreCase   Location:  12
'Comparison: Ordinal                      Location:  -1
'Comparison: OrdinalIgnoreCase            Location:  -1
'

Комментарии

Нумерация индексов начинается с нуля.Index numbering starts from zero. То есть первый символ в строке имеет нулевой индекс, а последний — в Length-1.That is, the first character in the string is at index zero and the last is at Length - 1.

Поиск начинается с позиции знака startIndex и переходит назад, пока не обнаружится value или не будет проверено count позиции символов.The search begins at the startIndex character position and proceeds backward until either value is found or count character positions have been examined. Например, если startIndexLength-1, метод ищет в обратном направлении count символа из последнего символа строки.For example, if startIndex is Length - 1, the method searches backward count characters from the last character in the string.

Параметр comparisonType определяет Поиск параметра value, используя текущий или инвариантный язык и региональные параметры, с учетом регистра или без учета регистра, а также с помощью правил сравнения по словам или порядковому номеру.The comparisonType parameter specifies to search for the value parameter using the current or invariant culture, using a case-sensitive or case-insensitive search, and using word or ordinal comparison rules.

Примечания для тех, кто вызывает этот метод

Наборы символов содержат игнорируемые символы, то есть символы, которые не учитываются при выполнении лингвистического сравнения или сравнения с учетом языка и региональных параметров.Character sets include ignorable characters, which are characters that are not considered when performing a linguistic or culture-sensitive comparison. Если при поиске с учетом языка и региональных параметров (то есть, если параметр comparisonType не имеет значение Ordinal или OrdinalIgnoreCase) параметр value содержит игнорируемый символ, результат аналогичен поиску с удаленным этим символом.In a culture-sensitive search (that is, if comparisonType is not Ordinal or OrdinalIgnoreCase), if value contains an ignorable character, the result is equivalent to searching with that character removed. Если value состоит только из одного или нескольких игнорируемых символов, метод LastIndexOf(String, Int32, Int32, StringComparison) всегда возвращает startIndex, то есть позиции символа, с которой начинается поиск.If value consists only of one or more ignorable characters, the LastIndexOf(String, Int32, Int32, StringComparison) method always returns startIndex, which is the character position at which the search begins.

В следующем примере метод LastIndexOf(String, Int32, Int32, StringComparison) используется для поиска позиции мягкого дефиса (U + 00AD), за которым следует символ «m», кроме первого знака «m» в двух строках.In the following example, the LastIndexOf(String, Int32, Int32, StringComparison) method is used to find the position of a soft hyphen (U+00AD) followed by an "m" in all but the first character position before the final "m" in two strings. Только одна из строк содержит требуемую подстроку.Only one of the strings contains the required substring. Если пример выполняется в .NET Framework 4.NET Framework 4 или более поздней версии, в обоих случаях, поскольку мягкий дефис является игнорируемым символом, метод возвращает индекс "m" в строке, когда он выполняет сравнение с учетом языка и региональных параметров.If the example is run on the .NET Framework 4.NET Framework 4 or later, in both cases, because the soft hyphen is an ignorable character, the method returns the index of "m" in the string when it performs a culture-sensitive comparison. Однако при выполнении порядкового сравнения он находит подстроку только в первой строке.When it performs an ordinal comparison, however, it finds the substring only in the first string. Обратите внимание, что в случае первой строки, которая включает мягкий дефис, за которым следует символ "m", метод не возвращает индекс мягкого дефиса, а вместо этого возвращает индекс "m", когда он выполняет сравнение с учетом языка и региональных параметров.Note that in the case of the first string, which includes the soft hyphen followed by an "m", the method fails to return the index of the soft hyphen but instead returns the index of the "m" when it performs a culture-sensitive comparison. Этот метод возвращает индекс мягкого переноса в первой строке только при выполнении порядкового сравнения.The method returns the index of the soft hyphen in the first string only when it performs an ordinal comparison.

[! код-CSharpSystem. String. LastIndexOf # 24] [! код-VBSystem. String. LastIndexOf # 24][!code-csharpSystem.String.LastIndexOf#24] [!code-vbSystem.String.LastIndexOf#24]

LastIndexOf(String, Int32)

Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанной строки в данном экземпляре.Reports the zero-based index position of the last occurrence of a specified string within this instance. Поиск начинается с указанной позиции символа и выполняется в обратном направлении до начала строки.The search starts at a specified character position and proceeds backward toward the beginning of the string.

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

Параметры

value
String

Строка для поиска.The string to seek.

startIndex
Int32

Позиция, с которой начинается поиск.The search starting position. Поиск выполняется от индекса, заданного параметром startIndex, до начала данного экземпляра.The search proceeds from startIndex toward the beginning of this instance.

Возвраты

Отсчитываемая от нуля начальная позиция индекса параметра value, если строка найдена; значение -1, если строка не найдена или значение текущего экземпляра равно Empty.The zero-based starting index position of value if that string is found, or -1 if it is not found or if the current instance equals Empty. Если значение параметра value равно Empty, возвращаемым значением является наименьшее значение из startIndex и последнего значения индекса в данном экземпляре.If value is Empty, the return value is the smaller of startIndex and the last index position in this instance.

Исключения

valuenull.value is null.

Текущий экземпляр не равен Empty, а startIndex меньше нуля или больше длины текущего экземпляра.The current instance does not equal Empty, and startIndex is less than zero or greater than the length of the current instance.

- или --or- Текущий экземпляр равен Empty, а startIndex меньше –1 или больше нуля.The current instance equals Empty, and startIndex is less than -1 or greater than zero.

Примеры

В следующем примере выполняется поиск индекса всех вхождений строки в целевой строке с конца целевой строки до начала целевой строки.The following example finds the index of all occurrences of a string in target string, working from the end of the target string to the start of the target string.

// Sample for String::LastIndexOf(String, Int32)
using namespace System;
int main()
{
   String^ br1 = "0----+----1----+----2----+----3----+----4----+----5----+----6----+-";
   String^ br2 = "0123456789012345678901234567890123456789012345678901234567890123456";
   String^ str = "Now is the time for all good men to come to the aid of their party.";
   int start;
   int at;
   start = str->Length - 1;
   Console::WriteLine( "All occurrences of 'he' from position {0} to 0.", start );
   Console::WriteLine( "{0}\n{1}\n{2}\n", br1, br2, str );
   Console::Write( "The string 'he' occurs at position(s): " );
   at = 0;
   while ( (start > -1) && (at > -1) )
   {
      at = str->LastIndexOf( "he", start );
      if ( at > -1 )
      {
         Console::Write( " {0} ", at );
         start = at - 1;
      }
   }

   Console::WriteLine();
}

/*
This example produces the following results:
All occurrences of 'he' from position 66 to 0.
0----+----1----+----2----+----3----+----4----+----5----+----6----+-
0123456789012345678901234567890123456789012345678901234567890123456
Now is the time for all good men to come to the aid of their party.

The string 'he' occurs at position(s):  56  45  8
*/
// Sample for String.LastIndexOf(String, Int32)
using System;

class Sample {
    public static void Main() {

    string br1 = "0----+----1----+----2----+----3----+----4----+----5----+----6----+-";
    string br2 = "0123456789012345678901234567890123456789012345678901234567890123456";
    string str = "Now is the time for all good men to come to the aid of their party.";
    int start;
    int at;

    start = str.Length-1;
    Console.WriteLine("All occurrences of 'he' from position {0} to 0.", start);
    Console.WriteLine("{1}{0}{2}{0}{3}{0}", Environment.NewLine, br1, br2, str);
    Console.Write("The string 'he' occurs at position(s): ");

    at = 0;
    while((start > -1) && (at > -1))
        {
        at = str.LastIndexOf("he", start);
        if (at > -1) 
            {
            Console.Write("{0} ", at);
            start = at - 1;
            }
        }
    Console.Write("{0}{0}{0}", Environment.NewLine);
    }
}
/*
This example produces the following results:
All occurrences of 'he' from position 66 to 0.
0----+----1----+----2----+----3----+----4----+----5----+----6----+-
0123456789012345678901234567890123456789012345678901234567890123456
Now is the time for all good men to come to the aid of their party.

The string 'he' occurs at position(s): 56 45 8


*/
' Sample for String.LastIndexOf(String, Int32)
 _

Class Sample
   
   Public Shared Sub Main()
      
      Dim br1 As String = "0----+----1----+----2----+----3----+----4----+----5----+----6----+-"
      Dim br2 As String = "0123456789012345678901234567890123456789012345678901234567890123456"
      Dim str As String = "Now is the time for all good men to come to the aid of their party."
      Dim start As Integer
      Dim at As Integer

      '#3
      start = str.Length - 1
      Console.WriteLine("All occurrences of 'he' from position {0} to 0.", start)
      Console.WriteLine("{1}{0}{2}{0}{3}{0}", Environment.NewLine, br1, br2, str)
      Console.Write("The string 'he' occurs at position(s): ")
      
      at = 0
      While start > - 1 And at > - 1
         at = str.LastIndexOf("he", start)
         If at > - 1 Then
            Console.Write("{0} ", at)
            start = at - 1
         End If
      End While
      Console.Write("{0}{0}{0}", Environment.NewLine)
   End Sub
End Class
'
'This example produces the following results:
'All occurrences of 'he' from position 66 to 0.
'0----+----1----+----2----+----3----+----4----+----5----+----6----+-
'0123456789012345678901234567890123456789012345678901234567890123456
'Now is the time for all good men to come to the aid of their party.
'
'The string 'he' occurs at position(s): 56 45 8
'
'

Комментарии

Нумерация индексов начинается с нуля.Index numbering starts from zero. То есть первый символ в строке имеет нулевой индекс, а последний — в Length-1.That is, the first character in the string is at index zero and the last is at Length - 1.

Поиск начинается с позиции знака startIndex данного экземпляра и продолжается в направлении до начала, пока не обнаружится value или не будет проверен первый символ.The search begins at the startIndex character position of this instance and proceeds backward toward the beginning until either value is found or the first character position has been examined. Например, если startIndexLength-1, метод ищет каждый символ из последнего символа в строке в начале.For example, if startIndex is Length - 1, the method searches every character from the last character in the string to the beginning.

Этот метод выполняет поиск по словам (с учетом регистра и с учетом языка и региональных параметров), используя текущий язык и региональные параметры.This method performs a word (case-sensitive and culture-sensitive) search using the current culture.

Наборы символов содержат игнорируемые символы, то есть символы, которые не учитываются при выполнении лингвистического сравнения или сравнения с учетом языка и региональных параметров.Character sets include ignorable characters, which are characters that are not considered when performing a linguistic or culture-sensitive comparison. Если при поиске с учетом языка и региональных параметров параметр value содержит игнорируемый символ, результат аналогичен поиску с удаленным этим символом.In a culture-sensitive search, if value contains an ignorable character, the result is equivalent to searching with that character removed. Если value состоит только из одного или нескольких игнорируемых символов, метод LastIndexOf(String, Int32) всегда возвращает startIndex, то есть позиции символа, с которой начинается поиск.If value consists only of one or more ignorable characters, the LastIndexOf(String, Int32) method always returns startIndex, which is the character position at which the search begins. В следующем примере метод LastIndexOf(String, Int32) используется для поиска подстроки, которая содержит мягкий дефис (U + 00AD) и предшествует или включает в себя окончательный символ "m" в строке.In the following example, the LastIndexOf(String, Int32) method is used to find a substring that includes a soft hyphen (U+00AD) and that precedes or includes the final "m" in a string. Если пример выполняется в .NET Framework 4.NET Framework 4 или более поздней версии, так как мягкий дефис в строке поиска игнорируется, вызов метода для поиска подстроки, состоящей из мягкого дефиса, а "m" возвращает расположение "m" в строке, а вызывает его для поиска подстроки, которая состоит из мягкого дефиса, а "n" — от "n".If the example is run on the .NET Framework 4.NET Framework 4 or later, because the soft hyphen in the search string is ignored, calling the method to find a substring that consists of the soft hyphen and "m" returns the position of the "m" in the string, whereas calling it to find a substring that consists of the soft hyphen and "n" returns the position of the "n". Если строка поиска содержит только мягкий дефис, метод возвращает индекс "m", который представляет значение startIndex.When the search string contains only the soft hyphen, the method returns the index of the "m", which represents the value of startIndex.

using System;

public class Example
{
   public static void Main()
   {
      int position = 0;
      string s1 = "ani\u00ADmal";
      string s2 = "animal";
      
      // Find the index of the soft hyphen.
      position = s1.LastIndexOf("m");
      Console.WriteLine("'m' at position {0}", position);
      if (position >= 0)
         Console.WriteLine(s1.LastIndexOf("\u00AD", position));

      position = s2.LastIndexOf("m");
      Console.WriteLine("'m' at position {0}", position);
      if (position >= 0)   
         Console.WriteLine(s2.LastIndexOf("\u00AD", position));
      
      // Find the index of the soft hyphen followed by "n".
      position = s1.LastIndexOf("m");
      Console.WriteLine("'m' at position {0}", position);
      if (position >= 0)
         Console.WriteLine(s1.LastIndexOf("\u00ADn", position));

      position = s2.LastIndexOf("m");
      Console.WriteLine("'m' at position {0}", position);
      if (position >= 0)   
         Console.WriteLine(s2.LastIndexOf("\u00ADn", position));
      
      // Find the index of the soft hyphen followed by "m".
      position = s1.LastIndexOf("m");
      Console.WriteLine("'m' at position {0}", position);
      if (position >= 0)
         Console.WriteLine(s1.LastIndexOf("\u00ADm", position));

      position = s2.LastIndexOf("m");
      Console.WriteLine("'m' at position {0}", position);
      if (position >= 0)   
         Console.WriteLine(s2.LastIndexOf("\u00ADm", position));
   }
}
// The example displays the following output:
//       'm' at position 4
//       4
//       'm' at position 3
//       3
//       'm' at position 4
//       1
//       'm' at position 3
//       1
//       'm' at position 4
//       4
//       'm' at position 3
//       3
Module Example
   Public Sub Main()
      Dim position As Integer
      Dim softHyphen As String = ChrW(&h00AD)
      Dim s1 As String = "ani" + softHyphen + "mal"
      Dim s2 As String = "animal"
      
      ' Find the index of the soft hyphen.
      position = s1.LastIndexOf("m")
      Console.WriteLine("'m' at position {0}", position)
      If position >= 0 Then
         Console.WriteLine(s1.LastIndexOf(softHyphen, position))
      End If
         
      position = s2.LastIndexOf("m")
      Console.WriteLine("'m' at position {0}", position)
      If position >= 0 Then
         Console.WriteLine(s2.LastIndexOf(softHyphen, position))
      End If
      
      ' Find the index of the soft hyphen followed by "n".
      position = s1.LastIndexOf("m")
      Console.WriteLine("'m' at position {0}", position)
      If position >= 0 Then
         Console.WriteLine(s1.LastIndexOf(softHyphen + "n", position))
      End If
         
      position = s2.LastIndexOf("m")
      Console.WriteLine("'m' at position {0}", position)
      If position >= 0 Then
         Console.WriteLine(s2.LastIndexOf(softHyphen + "n", position))
      End If
      
      ' Find the index of the soft hyphen followed by "m".
      position = s1.LastIndexOf("m")
      Console.WriteLine("'m' at position {0}", position)
      If position >= 0 Then
         Console.WriteLine(s1.LastIndexOf(softHyphen + "m", position))
      End If
      
      position = s2.LastIndexOf("m")
      Console.WriteLine("'m' at position {0}", position)
      If position >= 0 Then
         Console.WriteLine(s2.LastIndexOf(softHyphen + "m", position))
      End If
   End Sub
End Module
' The example displays the following output:
'       'm' at position 4
'       4
'       'm' at position 3
'       3
'       'm' at position 4
'       1
'       'm' at position 3
'       1
'       'm' at position 4
'       4
'       'm' at position 3
'       3

Примечания для тех, кто вызывает этот метод

Как описано в статье рекомендации по использованию строк, рекомендуется избегать вызова методов сравнения строк, которые заменяют значения по умолчанию, а вызывают методы, для которых требуется явно указать параметры.As explained in Best Practices for Using Strings, we recommend that you avoid calling string comparison methods that substitute default values and instead call methods that require parameters to be explicitly specified. Чтобы найти индекс подстроки, предшествующей определенной позиции символа, используя правила сравнения текущего языка и региональных параметров, вызовите перегрузку метода LastIndexOf(String, Int32, StringComparison) со значением CurrentCulture для своего параметра comparisonType.To find the index of a substring that precedes a particular character position by using the comparison rules of the current culture, call the LastIndexOf(String, Int32, StringComparison) method overload with a value of CurrentCulture for its comparisonType parameter.

Дополнительно

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