String.LastIndexOf Metoda

Definicja

Zgłasza położenie indeksu zerowego ostatniego wystąpienia określonego znaku Unicode lub ciągu w tym wystąpieniu. Metoda zwraca -1, jeśli znak lub ciąg nie zostanie znaleziony w tym wystąpieniu.

Przeciążenia

LastIndexOf(String, Int32, Int32, StringComparison)

Raportuje położenie indeksu zerowego ostatniego wystąpienia określonego ciągu w tym wystąpieniu. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i przechodzi do tyłu w kierunku początku ciągu dla określonej liczby pozycji znaków. Parametr określa typ porównania do wykonania podczas wyszukiwania określonego ciągu.

LastIndexOf(String, Int32, Int32)

Raportuje położenie indeksu zerowego ostatniego wystąpienia określonego ciągu w tym wystąpieniu. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i przechodzi do tyłu w kierunku początku ciągu dla określonej liczby pozycji znaków.

LastIndexOf(Char, Int32, Int32)

Zgłasza położenie indeksu zerowego ostatniego wystąpienia określonego znaku Unicode w podciągu w tym wystąpieniu. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i przechodzi do tyłu w kierunku początku ciągu dla określonej liczby pozycji znaków.

LastIndexOf(String, StringComparison)

Zgłasza indeks zerowy ostatniego wystąpienia określonego ciągu w bieżącym obiekcie String. Parametr określa typ wyszukiwania do użycia dla określonego ciągu.

LastIndexOf(String, Int32, StringComparison)

Zgłasza indeks zerowy ostatniego wystąpienia określonego ciągu w bieżącym obiekcie String. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i przechodzi do tyłu w kierunku początku ciągu. Parametr określa typ porównania do wykonania podczas wyszukiwania określonego ciągu.

LastIndexOf(Char, Int32)

Zgłasza położenie indeksu zerowego ostatniego wystąpienia określonego znaku Unicode w tym wystąpieniu. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i przechodzi do tyłu w kierunku początku ciągu.

LastIndexOf(String)

Raportuje położenie indeksu zerowego ostatniego wystąpienia określonego ciągu w tym wystąpieniu.

LastIndexOf(Char)

Zgłasza położenie indeksu zerowego ostatniego wystąpienia określonego znaku Unicode w tym wystąpieniu.

LastIndexOf(String, Int32)

Raportuje położenie indeksu zerowego ostatniego wystąpienia określonego ciągu w tym wystąpieniu. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i przechodzi do tyłu w kierunku początku ciągu.

LastIndexOf(String, Int32, Int32, StringComparison)

Źródło:
String.Searching.cs
Źródło:
String.Searching.cs
Źródło:
String.Searching.cs

Raportuje położenie indeksu zerowego ostatniego wystąpienia określonego ciągu w tym wystąpieniu. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i przechodzi do tyłu w kierunku początku ciągu dla określonej liczby pozycji znaków. Parametr określa typ porównania do wykonania podczas wyszukiwania określonego ciągu.

C#
public int LastIndexOf (string value, int startIndex, int count, StringComparison comparisonType);

Parametry

value
String

Ciąg do wyszukiwania.

startIndex
Int32

Pozycja początkowa wyszukiwania. Wyszukiwanie jest kontynuowane od startIndex na początku tego wystąpienia.

count
Int32

Liczba pozycji znaków do zbadania.

comparisonType
StringComparison

Jedna z wartości wyliczenia określająca reguły wyszukiwania.

Zwraca

Położenie indeksu początkowego na podstawie zera parametru value, jeśli ten ciąg zostanie znaleziony, lub -1, jeśli nie zostanie znaleziony, lub jeśli bieżące wystąpienie jest równe Empty.

Wyjątki

value jest null.

count jest ujemna.

-lub-

Bieżące wystąpienie nie jest równe Empty, a startIndex jest ujemne.

-lub-

Bieżące wystąpienie nie jest równe Emptyi startIndex jest większe niż długość tego wystąpienia.

-lub-

Bieżące wystąpienie nie jest równe Empty, a startIndex + 1 — count określa pozycję, która nie znajduje się w tym wystąpieniu.

-lub-

Bieżące wystąpienie jest równe Empty i startIndex jest mniejsze niż -1 lub większe niż zero.

-lub-

Bieżące wystąpienie jest równe Empty i count jest większe niż 1.

comparisonType nie jest prawidłową wartością StringComparison.

Przykłady

W poniższym przykładzie pokazano trzy przeciążenia metody LastIndexOf, które znajdują ostatnie wystąpienie ciągu w innym ciągu przy użyciu różnych wartości wyliczenia StringComparison.

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

*/

Uwagi

Numerowanie indeksów rozpoczyna się od zera. Oznacza to, że pierwszy znak w ciągu wynosi zero indeksu, a ostatni jest w Length - 1.

Wyszukiwanie rozpoczyna się od pozycji znaku startIndex i przechodzi do tyłu, aż zostanie znaleziona value lub count pozycje znaków zostały zbadane. Jeśli na przykład startIndex jest Length — 1, metoda wyszukuje znaki count wstecz z ostatniego znaku w ciągu.

Parametr comparisonType określa, aby wyszukać parametr value przy użyciu:

  • Bieżąca lub niezmienna kultura.
  • Uwzględniana wielkość liter lub wyszukiwanie bez uwzględniania wielkości liter.
  • Reguły porównywania porządkowego wyrazów.

Uwagi dotyczące wywoływania

Zestawy znaków zawierają znaki, które nie są uwzględniane podczas porównywania językowego lub wrażliwego na kulturę. W wyszukiwaniu uwzględniającym kulturę (czyli jeśli comparisonType nie jest Ordinal lub OrdinalIgnoreCase), jeśli value zawiera znak ignorowalny, wynik jest odpowiednikiem wyszukiwania z usuniętym znakiem.

W poniższym przykładzie metoda LastIndexOf(String, Int32, Int32, StringComparison) służy do znajdowania pozycji łącznika miękkiego (U+00AD), po którym następuje znak "m" we wszystkich, ale pierwszej pozycji znaku przed ostatnim "m" w dwóch ciągach. Tylko jeden z ciągów zawiera wymagany podciąg. Jeśli przykład jest uruchamiany w programie .NET Framework 4 lub nowszym, w obu przypadkach, ponieważ łącznik miękki jest znakiem ignorowalnym, metoda zwraca indeks "m" w ciągu, gdy wykonuje porównanie uwzględniające kulturę. Gdy wykonuje porównanie porządkowe, jednak znajduje podciąg tylko w pierwszym ciągu. Należy pamiętać, że w przypadku pierwszego ciągu, który zawiera łącznik miękki, po którym następuje znak "m", metoda zwraca indeks "m", gdy wykonuje porównanie wrażliwe na kulturę. Metoda zwraca indeks łącznika miękkiego w pierwszym ciągu tylko wtedy, gdy wykonuje porównanie porządkowe.

C#
string searchString = "\u00ADm";

string s1 = "ani\u00ADmal";
string s2 = "animal";

int position;

position = s1.LastIndexOf('m');
if (position >= 1)
{
    Console.WriteLine(s1.LastIndexOf(searchString, position, position, StringComparison.CurrentCulture));
    Console.WriteLine(s1.LastIndexOf(searchString, position, position, StringComparison.Ordinal));
}

position = s2.LastIndexOf('m');
if (position >= 1)
{
    Console.WriteLine(s2.LastIndexOf(searchString, position, position, StringComparison.CurrentCulture));
    Console.WriteLine(s2.LastIndexOf(searchString, position, position, StringComparison.Ordinal));
}

// The example displays the following output:
//
// 4
// 3
// 3
// -1

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

LastIndexOf(String, Int32, Int32)

Źródło:
String.Searching.cs
Źródło:
String.Searching.cs
Źródło:
String.Searching.cs

Raportuje położenie indeksu zerowego ostatniego wystąpienia określonego ciągu w tym wystąpieniu. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i przechodzi do tyłu w kierunku początku ciągu dla określonej liczby pozycji znaków.

C#
public int LastIndexOf (string value, int startIndex, int count);

Parametry

value
String

Ciąg do wyszukiwania.

startIndex
Int32

Pozycja początkowa wyszukiwania. Wyszukiwanie jest kontynuowane od startIndex na początku tego wystąpienia.

count
Int32

Liczba pozycji znaków do zbadania.

Zwraca

Położenie indeksu początkowego opartego na zera value, jeśli ten ciąg zostanie znaleziony, lub -1, jeśli nie zostanie znaleziony lub jeśli bieżące wystąpienie będzie równe Empty.

Wyjątki

value jest null.

count jest ujemna.

-lub-

Bieżące wystąpienie nie jest równe Empty, a startIndex jest ujemne.

-lub-

Bieżące wystąpienie nie jest równe Emptyi startIndex jest większe niż długość tego wystąpienia.

-lub-

Bieżące wystąpienie nie jest równe Empty, a startIndex - count+ 1 określa pozycję, która nie znajduje się w tym wystąpieniu.

-lub-

Bieżące wystąpienie jest równe Empty i startIndex jest mniejsze niż -1 lub większe niż zero.

-lub-

Bieżące wystąpienie jest równe Empty i count jest większe niż 1.

Przykłady

Poniższy przykład znajduje indeks wszystkich wystąpień ciągu w podciągach, działający od końca podciągu do początku podciągów.

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

Uwagi

Numerowanie indeksów rozpoczyna się od zera. Oznacza to, że pierwszy znak w ciągu wynosi zero indeksu, a ostatni jest w Length - 1.

Wyszukiwanie rozpoczyna się od pozycji znaku startIndex tego wystąpienia i przechodzi do tyłu w kierunku początku, aż zostanie znaleziona value lub count pozycje znaków zostały zbadane. Jeśli na przykład startIndex jest Length — 1, metoda wyszukuje znaki count wstecz z ostatniego znaku w ciągu.

Ta metoda wykonuje wyszukiwanie wyrazów (z uwzględnieniem wielkości liter i z uwzględnieniem kultury) przy użyciu bieżącej kultury.

Zestawy znaków zawierają znaki, które nie są uwzględniane podczas porównywania językowego lub wrażliwego na kulturę. W wyszukiwaniu uwzględniającym kulturę, jeśli value zawiera znak ignorowalny, wynik jest odpowiednikiem wyszukiwania z usuniętym znakiem.

W poniższym przykładzie metoda LastIndexOf służy do znajdowania pozycji łącznika miękkiego (U+00AD), po którym następuje znak "m" lub "n" w dwóch ciągach. Tylko jeden z ciągów zawiera łącznik miękki. W przypadku ciągu zawierającego łącznik miękki, po którym następuje znak "m", LastIndexOf zwraca indeks "m" podczas wyszukiwania łącznika miękkiego, po którym następuje znak "m".

C#
int position = 0;
string s1 = "ani\u00ADmal";
string s2 = "animal";

// Find the index of the soft hyphen followed by "n".
position = s1.LastIndexOf("m");
Console.WriteLine($"'m' at position {position}");

if (position >= 0)
    Console.WriteLine(s1.LastIndexOf("\u00ADn", position, position + 1));

position = s2.LastIndexOf("m");
Console.WriteLine($"'m' at position {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 {position}");

if (position >= 0)
    Console.WriteLine(s1.LastIndexOf("\u00ADm", position, position + 1));

position = s2.LastIndexOf("m");
Console.WriteLine($"'m' at position {position}");

if (position >= 0)
    Console.WriteLine(s2.LastIndexOf("\u00ADm", position, position + 1));

// The example displays the following output:
//
// 'm' at position 4
// 1
// 'm' at position 3
// 1
// 'm' at position 4
// 4
// 'm' at position 3
// 3

Uwagi dotyczące wywoływania

Jak wyjaśniono w najlepszych rozwiązań dotyczących używania ciągów, zalecamy unikanie wywoływania metod porównywania ciągów, które zastępują wartości domyślne, a zamiast tego wywołuje metody, które wymagają jawnego określenia parametrów. Aby wykonać tę operację przy użyciu reguł porównania bieżącej kultury, zasygnalizuj zamiar jawnie, wywołując przeciążenie metody LastIndexOf(String, Int32, Int32, StringComparison) z wartością CurrentCulture dla parametru comparisonType. Jeśli nie potrzebujesz porównania lingwistyki, rozważ użycie Ordinal.

Zobacz też

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

LastIndexOf(Char, Int32, Int32)

Źródło:
String.Searching.cs
Źródło:
String.Searching.cs
Źródło:
String.Searching.cs

Zgłasza położenie indeksu zerowego ostatniego wystąpienia określonego znaku Unicode w podciągu w tym wystąpieniu. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i przechodzi do tyłu w kierunku początku ciągu dla określonej liczby pozycji znaków.

C#
public int LastIndexOf (char value, int startIndex, int count);

Parametry

value
Char

Znak Unicode do wyszukiwania.

startIndex
Int32

Pozycja początkowa wyszukiwania. Wyszukiwanie jest kontynuowane od startIndex na początku tego wystąpienia.

count
Int32

Liczba pozycji znaków do zbadania.

Zwraca

Położenie indeksu opartego na zerze value, jeśli ten znak zostanie znaleziony, lub -1, jeśli nie zostanie znaleziony lub jeśli bieżące wystąpienie będzie równe Empty.

Wyjątki

Bieżące wystąpienie nie jest równe Empty, a startIndex jest mniejsze niż zero lub większe lub równe długości tego wystąpienia.

-lub-

Bieżące wystąpienie nie jest równe Empty, a startIndex - count + 1 jest mniejsze niż zero.

Przykłady

W poniższym przykładzie indeks wszystkich wystąpień znaku w podciągnie działa od końca podciągu do początku podciągów.

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


*/

Uwagi

Numerowanie indeksów rozpoczyna się od zera. Oznacza to, że pierwszy znak w ciągu wynosi zero indeksu, a ostatni jest w Length - 1.

Ta metoda rozpoczyna wyszukiwanie w pozycji znaku startIndex i przechodzi do tyłu na początku tego wystąpienia do momentu znalezienia value lub count pozycji znaków. Jeśli na przykład startIndex jest Length — 1, metoda wyszukuje znaki count wstecz z ostatniego znaku w ciągu. Wyszukiwanie uwzględnia wielkość liter.

Ta metoda wykonuje wyszukiwanie porządkowe (niewrażliwe na kulturę), gdzie znak jest uznawany za równoważny innemu znakowi tylko wtedy, gdy ich wartość skalarna Unicode jest taka sama. Aby przeprowadzić wyszukiwanie wrażliwe na kulturę, użyj metody CompareInfo.LastIndexOf, gdzie wartość skalarna Unicode reprezentująca wstępnie skompilowany znak, taki jak ligatura "Æ" (U+00C6), może być traktowana jako równoważna każdemu wystąpieniu składników znaku w prawidłowej sekwencji, takich jak "AE" (U+0041, U+0045), w zależności od kultury.

Zobacz też

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

LastIndexOf(String, StringComparison)

Źródło:
String.Searching.cs
Źródło:
String.Searching.cs
Źródło:
String.Searching.cs

Zgłasza indeks zerowy ostatniego wystąpienia określonego ciągu w bieżącym obiekcie String. Parametr określa typ wyszukiwania do użycia dla określonego ciągu.

C#
public int LastIndexOf (string value, StringComparison comparisonType);

Parametry

value
String

Ciąg do wyszukiwania.

comparisonType
StringComparison

Jedna z wartości wyliczenia określająca reguły wyszukiwania.

Zwraca

Położenie indeksu początkowego na podstawie zera parametru value, jeśli ten ciąg zostanie znaleziony, lub -1, jeśli tak nie jest.

Wyjątki

value jest null.

comparisonType nie jest prawidłową wartością StringComparison.

Przykłady

W poniższym przykładzie pokazano trzy przeciążenia metody LastIndexOf, które znajdują ostatnie wystąpienie ciągu w innym ciągu przy użyciu różnych wartości wyliczenia StringComparison.

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

*/

Uwagi

Numerowanie indeksów rozpoczyna się od zera. Oznacza to, że pierwszy znak w ciągu wynosi zero indeksu, a ostatni jest w Length - 1.

Parametr comparisonType określa, aby wyszukać parametr value przy użyciu:

  • Bieżąca lub niezmienna kultura.
  • Uwzględniana wielkość liter lub wyszukiwanie bez uwzględniania wielkości liter.
  • Reguły porównywania porządkowego wyrazów.

Wyszukiwanie rozpoczyna się od ostatniego położenia znaku tego wystąpienia i przechodzi do tyłu do początku, aż zostanie znaleziona value lub zostanie zbadana pierwsza pozycja znaku.

Uwagi dotyczące wywoływania

Zestawy znaków zawierają znaki, które nie są uwzględniane podczas porównywania językowego lub wrażliwego na kulturę. W wyszukiwaniu uwzględniającym kulturę (czyli jeśli options nie jest Ordinal lub OrdinalIgnoreCase), jeśli value zawiera znak ignorowalny, wynik jest odpowiednikiem wyszukiwania z usuniętym znakiem.

W poniższym przykładzie metoda LastIndexOf(String, StringComparison) służy do znajdowania dwóch podciągów (łącznika miękkiego, a następnie "n", a następnie łącznika miękkiego, po którym następuje "m") w dwóch ciągach. Tylko jeden z ciągów zawiera łącznik miękki. Jeśli przykład jest uruchamiany w programie .NET Framework 4 lub nowszym, ponieważ łącznik nietrwały jest znakiem ignorowanym, wyszukiwanie wrażliwe na kulturę zwraca tę samą wartość, która zwróci, jeśli łącznik miękki nie został uwzględniony w ciągu wyszukiwania. Wyszukiwanie porządkowe jednak pomyślnie znajduje łącznik miękki w jednym ciągu i zgłasza, że jest nieobecny w drugim ciągu.

C#
string s1 = "ani\u00ADmal";
string s2 = "animal";

Console.WriteLine("Culture-sensitive comparison:");

// Use culture-sensitive comparison to find the last soft hyphen followed by "n".
Console.WriteLine(s1.LastIndexOf("\u00ADn", StringComparison.CurrentCulture));
Console.WriteLine(s2.LastIndexOf("\u00ADn", StringComparison.CurrentCulture));

// Use culture-sensitive comparison to find the last soft hyphen followed by "m".
Console.WriteLine(s1.LastIndexOf("\u00ADm", StringComparison.CurrentCulture));
Console.WriteLine(s2.LastIndexOf("\u00ADm", StringComparison.CurrentCulture));

Console.WriteLine("Ordinal comparison:");

// Use ordinal comparison to find the last soft hyphen followed by "n".
Console.WriteLine(s1.LastIndexOf("\u00ADn", StringComparison.Ordinal));
Console.WriteLine(s2.LastIndexOf("\u00ADn", StringComparison.Ordinal));

// Use ordinal comparison to find the last soft hyphen followed by "m".
Console.WriteLine(s1.LastIndexOf("\u00ADm", StringComparison.Ordinal));
Console.WriteLine(s2.LastIndexOf("\u00ADm", StringComparison.Ordinal));

// The example displays the following output:
//
// Culture-sensitive comparison:
// 1
// 1
// 4
// 3
// Ordinal comparison:
// -1
// -1
// 3
// -1

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

LastIndexOf(String, Int32, StringComparison)

Źródło:
String.Searching.cs
Źródło:
String.Searching.cs
Źródło:
String.Searching.cs

Zgłasza indeks zerowy ostatniego wystąpienia określonego ciągu w bieżącym obiekcie String. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i przechodzi do tyłu w kierunku początku ciągu. Parametr określa typ porównania do wykonania podczas wyszukiwania określonego ciągu.

C#
public int LastIndexOf (string value, int startIndex, StringComparison comparisonType);

Parametry

value
String

Ciąg do wyszukiwania.

startIndex
Int32

Pozycja początkowa wyszukiwania. Wyszukiwanie jest kontynuowane od startIndex na początku tego wystąpienia.

comparisonType
StringComparison

Jedna z wartości wyliczenia określająca reguły wyszukiwania.

Zwraca

Położenie indeksu początkowego na podstawie zera parametru value, jeśli ten ciąg zostanie znaleziony, lub -1, jeśli nie zostanie znaleziony, lub jeśli bieżące wystąpienie jest równe Empty.

Wyjątki

value jest null.

Bieżące wystąpienie nie jest równe Empty, a startIndex jest mniejsze niż zero lub większe niż długość bieżącego wystąpienia.

-lub-

Bieżące wystąpienie jest równe Empty, a startIndex jest mniejsze niż -1 lub większe niż zero.

comparisonType nie jest prawidłową wartością StringComparison.

Przykłady

W poniższym przykładzie pokazano trzy przeciążenia metody LastIndexOf, które znajdują ostatnie wystąpienie ciągu w innym ciągu przy użyciu różnych wartości wyliczenia StringComparison.

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

*/

Uwagi

Numerowanie indeksów rozpoczyna się od zera. Oznacza to, że pierwszy znak w ciągu wynosi zero indeksu, a ostatni jest w Length - 1.

Wyszukiwanie rozpoczyna się od pozycji znaku startIndex i przechodzi do tyłu do momentu znalezienia value lub zbadania pierwszego położenia znaku. Jeśli na przykład startIndex jest Length — 1, metoda wyszukuje każdy znak z ostatniego znaku w ciągu na początku.

Parametr comparisonType określa wyszukiwanie parametru value przy użyciu bieżącej lub niezmiennej kultury, przy użyciu wyszukiwania bez uwzględniania wielkości liter lub bez uwzględniania wielkości liter oraz używania reguł porównania porządkowego wyrazów.

Uwagi dotyczące wywoływania

Zestawy znaków zawierają znaki, które nie są uwzględniane podczas porównywania językowego lub wrażliwego na kulturę. W wyszukiwaniu uwzględniającym kulturę (czyli jeśli comparisonType nie jest Ordinal lub OrdinalIgnoreCase), jeśli value zawiera znak ignorowalny, wynik jest odpowiednikiem wyszukiwania z usuniętym znakiem.

W poniższym przykładzie metoda LastIndexOf(String, Int32, StringComparison) służy do znajdowania pozycji łącznika miękkiego (U+00AD), a następnie znaku "m", począwszy od końcowego "m" w dwóch ciągach. Tylko jeden z ciągów zawiera wymagany podciąg. Jeśli przykład jest uruchamiany w programie .NET Framework 4 lub nowszym, w obu przypadkach, ponieważ łącznik miękki jest znakiem ignorowalnym, metoda zwraca indeks "m" w ciągu, gdy wykonuje porównanie uwzględniające kulturę. Należy pamiętać, że w przypadku pierwszego ciągu, który zawiera łącznik miękki, a następnie "m", metoda zwraca indeks "m", a nie indeks łącznika miękkiego. Metoda zwraca indeks łącznika miękkiego w pierwszym ciągu tylko wtedy, gdy wykonuje porównanie porządkowe.

C#
string searchString = "\u00ADm";

string s1 = "ani\u00ADmal";
string s2 = "animal";

int position;

position = s1.LastIndexOf('m');
if (position >= 0)
{
    Console.WriteLine(s1.LastIndexOf(searchString, position, StringComparison.CurrentCulture));
    Console.WriteLine(s1.LastIndexOf(searchString, position, StringComparison.Ordinal));
}

position = s2.LastIndexOf('m');
if (position >= 0)
{
    Console.WriteLine(s2.LastIndexOf(searchString, position, StringComparison.CurrentCulture));
    Console.WriteLine(s2.LastIndexOf(searchString, position, StringComparison.Ordinal));
}

// The example displays the following output:
//
// 4
// 3
// 3
// -1

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

LastIndexOf(Char, Int32)

Źródło:
String.Searching.cs
Źródło:
String.Searching.cs
Źródło:
String.Searching.cs

Zgłasza położenie indeksu zerowego ostatniego wystąpienia określonego znaku Unicode w tym wystąpieniu. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i przechodzi do tyłu w kierunku początku ciągu.

C#
public int LastIndexOf (char value, int startIndex);

Parametry

value
Char

Znak Unicode do wyszukiwania.

startIndex
Int32

Pozycja początkowa wyszukiwania. Wyszukiwanie jest kontynuowane od startIndex na początku tego wystąpienia.

Zwraca

Położenie indeksu opartego na zerze value, jeśli ten znak zostanie znaleziony, lub -1, jeśli nie zostanie znaleziony lub jeśli bieżące wystąpienie będzie równe Empty.

Wyjątki

Bieżące wystąpienie nie jest równe Empty, a startIndex jest mniejsze niż zero lub większe lub równe długości tego wystąpienia.

Przykłady

Poniższy przykład znajduje indeks wszystkich wystąpień znaku w ciągu, który działa od końca ciągu do początku ciągu.

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

Uwagi

Numerowanie indeksów rozpoczyna się od zera. Oznacza to, że pierwszy znak w ciągu wynosi zero indeksu, a ostatni jest w Length - 1. Ta metoda rozpoczyna wyszukiwanie w pozycji znaku startIndex tego wystąpienia i przechodzi do tyłu w kierunku początku bieżącego wystąpienia do momentu znalezienia value lub zbadania pierwszego położenia znaku. Jeśli na przykład startIndex jest Length — 1, metoda wyszukuje każdy znak z ostatniego znaku w ciągu na początku. Wyszukiwanie uwzględnia wielkość liter.

Ta metoda wykonuje wyszukiwanie porządkowe (niewrażliwe na kulturę), gdzie znak jest uznawany za równoważny innemu znakowi tylko wtedy, gdy ich wartości skalarne Unicode są takie same. Aby przeprowadzić wyszukiwanie wrażliwe na kulturę, użyj metody CompareInfo.LastIndexOf, gdzie wartość skalarna Unicode reprezentująca wstępnie skompilowany znak, taki jak ligatura "Æ" (U+00C6), może być traktowana jako równoważna każdemu wystąpieniu składników znaku w prawidłowej sekwencji, takich jak "AE" (U+0041, U+0045), w zależności od kultury.

Zobacz też

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

LastIndexOf(String)

Źródło:
String.Searching.cs
Źródło:
String.Searching.cs
Źródło:
String.Searching.cs

Raportuje położenie indeksu zerowego ostatniego wystąpienia określonego ciągu w tym wystąpieniu.

C#
public int LastIndexOf (string value);

Parametry

value
String

Ciąg do wyszukiwania.

Zwraca

Położenie indeksu początkowego na podstawie zera value, jeśli ten ciąg zostanie znaleziony, lub -1, jeśli tak nie jest.

Wyjątki

value jest null.

Przykłady

Poniższy przykład usuwa otwieranie i zamykanie tagów HTML z ciągu, jeśli tagi zaczynają się i kończą ciąg. Jeśli ciąg kończy się znakiem zamykającym nawiasu (">"), w przykładzie użyto metody LastIndexOf w celu zlokalizowania początku tagu końcowego.

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

Uwagi

Numerowanie indeksów rozpoczyna się od zera. Oznacza to, że pierwszy znak w ciągu wynosi zero indeksu, a ostatni jest w Length - 1.

Wyszukiwanie rozpoczyna się od ostatniego położenia znaku tego wystąpienia i przechodzi do tyłu do początku, aż zostanie znaleziona value lub zostanie zbadana pierwsza pozycja znaku.

Ta metoda wykonuje wyszukiwanie wyrazów (z uwzględnieniem wielkości liter i z uwzględnieniem kultury) przy użyciu bieżącej kultury.

Zestawy znaków zawierają znaki, które nie są uwzględniane podczas porównywania językowego lub wrażliwego na kulturę. W wyszukiwaniu uwzględniającym kulturę, jeśli value zawiera znak ignorowalny, wynik jest odpowiednikiem wyszukiwania z usuniętym znakiem.

W poniższym przykładzie metoda LastIndexOf(String) służy do znajdowania dwóch podciągów (łącznika miękkiego, po którym następuje "n" i łącznika miękkiego, po którym następuje znak "m") w dwóch ciągach. Tylko jeden z ciągów zawiera łącznik miękki. Jeśli przykład jest uruchamiany w programie .NET Framework 4 lub nowszym, w każdym przypadku, ponieważ łącznik miękki jest znakiem ignorowalnym, wynik jest taki sam, jak w przypadku, gdy łącznik miękki nie został uwzględniony w value.

C#
string s1 = "ani\u00ADmal";
string s2 = "animal";

// 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:
//
// 1
// 1
// 4
// 3

Uwagi dotyczące wywoływania

Jak wyjaśniono w najlepszych rozwiązań dotyczących używania ciągów, zalecamy unikanie wywoływania metod porównywania ciągów, które zastępują wartości domyślne, a zamiast tego wywołuje metody, które wymagają jawnego określenia parametrów. Aby znaleźć ostatni indeks podciągów w wystąpieniu ciągu przy użyciu reguł porównania bieżącej kultury, zasygnalizuj zamiar jawnie, wywołując przeciążenie metody LastIndexOf(String, StringComparison) z wartością CurrentCulture dla parametru comparisonType. Jeśli nie potrzebujesz porównania lingwistyki, rozważ użycie Ordinal.

Zobacz też

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

LastIndexOf(Char)

Źródło:
String.Searching.cs
Źródło:
String.Searching.cs
Źródło:
String.Searching.cs

Zgłasza położenie indeksu zerowego ostatniego wystąpienia określonego znaku Unicode w tym wystąpieniu.

C#
public int LastIndexOf (char value);

Parametry

value
Char

Znak Unicode do wyszukiwania.

Zwraca

Położenie indeksu opartego na zera value, jeśli ten znak zostanie znaleziony, lub -1, jeśli nie jest.

Przykłady

W poniższym przykładzie zdefiniowano metodę ExtractFilename, która używa metody LastIndexOf(Char) do znalezienia ostatniego znaku separatora katalogu w ciągu i wyodrębnienia nazwy pliku ciągu. Jeśli plik istnieje, metoda zwraca nazwę pliku bez ścieżki.

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

Uwagi

Numerowanie indeksów rozpoczyna się od zera. Oznacza to, że pierwszy znak w ciągu wynosi zero indeksu, a ostatni jest w Length - 1.

Ta metoda rozpoczyna wyszukiwanie w ostatniej pozycji znaku tego wystąpienia i przechodzi do tyłu w kierunku początku do momentu znalezienia value lub zbadania pierwszej pozycji znaku. Wyszukiwanie uwzględnia wielkość liter.

Ta metoda wykonuje wyszukiwanie porządkowe (niewrażliwe na kulturę), gdzie znak jest uznawany za równoważny innemu znakowi tylko wtedy, gdy ich wartości skalarne Unicode są takie same. Aby przeprowadzić wyszukiwanie wrażliwe na kulturę, użyj metody CompareInfo.LastIndexOf, gdzie wartość skalarna Unicode reprezentująca wstępnie skompilowany znak, taki jak ligatura "Æ" (U+00C6), może być traktowana jako równoważna każdemu wystąpieniu składników znaku w prawidłowej sekwencji, takich jak "AE" (U+0041, U+0045), w zależności od kultury.

Zobacz też

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

LastIndexOf(String, Int32)

Źródło:
String.Searching.cs
Źródło:
String.Searching.cs
Źródło:
String.Searching.cs

Raportuje położenie indeksu zerowego ostatniego wystąpienia określonego ciągu w tym wystąpieniu. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i przechodzi do tyłu w kierunku początku ciągu.

C#
public int LastIndexOf (string value, int startIndex);

Parametry

value
String

Ciąg do wyszukiwania.

startIndex
Int32

Pozycja początkowa wyszukiwania. Wyszukiwanie jest kontynuowane od startIndex na początku tego wystąpienia.

Zwraca

Położenie indeksu początkowego opartego na zera value, jeśli ten ciąg zostanie znaleziony, lub -1, jeśli nie zostanie znaleziony lub jeśli bieżące wystąpienie będzie równe Empty.

Wyjątki

value jest null.

Bieżące wystąpienie nie jest równe Empty, a startIndex jest mniejsze niż zero lub większe niż długość bieżącego wystąpienia.

-lub-

Bieżące wystąpienie jest równe Empty, a startIndex jest mniejsze niż -1 lub większe niż zero.

Przykłady

Poniższy przykład znajduje indeks wszystkich wystąpień ciągu w ciągu docelowym, który działa od końca ciągu docelowego do początku ciągu docelowego.

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


*/

Uwagi

Numerowanie indeksów rozpoczyna się od zera. Oznacza to, że pierwszy znak w ciągu wynosi zero indeksu, a ostatni jest w Length - 1.

Wyszukiwanie rozpoczyna się od pozycji znaku startIndex tego wystąpienia i przechodzi do tyłu w kierunku początku do momentu znalezienia value lub zbadania pierwszego położenia znaku. Jeśli na przykład startIndex jest Length — 1, metoda wyszukuje każdy znak z ostatniego znaku w ciągu na początku.

Ta metoda wykonuje wyszukiwanie wyrazów (z uwzględnieniem wielkości liter i z uwzględnieniem kultury) przy użyciu bieżącej kultury.

Zestawy znaków zawierają znaki, które nie są uwzględniane podczas porównywania językowego lub wrażliwego na kulturę. W wyszukiwaniu uwzględniającym kulturę, jeśli value zawiera znak ignorowalny, wynik jest odpowiednikiem wyszukiwania z usuniętym znakiem. W poniższym przykładzie metoda LastIndexOf(String, Int32) służy do znajdowania podciągów, który zawiera łącznik miękki (U+00AD), który poprzedza lub zawiera końcowy "m" w ciągu. Jeśli przykład jest uruchamiany w programie .NET Framework 4 lub nowszym, ponieważ łącznik miękki w ciągu wyszukiwania jest ignorowany, wywołując metodę , aby znaleźć podciąg składający się z łącznika miękkiego i "m" zwraca pozycję "m" w ciągu, wywołując go w celu znalezienia podciągów składających się z łącznika miękkiego i "n" zwraca pozycję "n".

C#
int position = 0;
string s1 = "ani\u00ADmal";
string s2 = "animal";

// Find the index of the soft hyphen followed by "n".
position = s1.LastIndexOf("m");
Console.WriteLine($"'m' at position {position}");

if (position >= 0)
    Console.WriteLine(s1.LastIndexOf("\u00ADn", position));

position = s2.LastIndexOf("m");
Console.WriteLine($"'m' at position {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 {position}");

if (position >= 0)
    Console.WriteLine(s1.LastIndexOf("\u00ADm", position));

position = s2.LastIndexOf("m");
Console.WriteLine($"'m' at position {position}");

if (position >= 0)
    Console.WriteLine(s2.LastIndexOf("\u00ADm", position));

// The example displays the following output:
//
// 'm' at position 4
// 1
// 'm' at position 3
// 1
// 'm' at position 4
// 4
// 'm' at position 3
// 3

Uwagi dotyczące wywoływania

Jak wyjaśniono w najlepszych rozwiązań dotyczących używania ciągów, zalecamy unikanie wywoływania metod porównywania ciągów, które zastępują wartości domyślne, a zamiast tego wywołuje metody, które wymagają jawnego określenia parametrów. Aby znaleźć indeks podciągu, który poprzedza konkretną pozycję znaku przy użyciu reguł porównania bieżącej kultury, zasygnalizuj zamiar jawnie, wywołując przeciążenie metody LastIndexOf(String, Int32, StringComparison) z wartością CurrentCulture dla parametru comparisonType. Jeśli nie potrzebujesz porównania lingwistyki, rozważ użycie Ordinal.

Zobacz też

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0