String.IndexOf Metoda

Definicja

Raportuje indeks oparty na zerowym pierwszym wystąpieniu określonego znaku Unicode lub ciągu w tym wystąpieniu. Metoda zwraca wartość -1, jeśli znak lub ciąg nie zostaną znalezione w tym wystąpieniu.

Przeciążenia

IndexOf(String, Int32, Int32, StringComparison)

Raportuje indeks oparty na zerowym pierwszym wystąpieniu określonego ciągu w bieżącym String obiekcie. Parametry określają pozycję wyszukiwania początkowego w bieżącym ciągu, liczbę znaków w bieżącym ciągu do wyszukania oraz typ wyszukiwania do użycia dla określonego ciągu.

IndexOf(String, Int32, Int32)

Raportuje zerowy indeks pierwszego wystąpienia określonego ciągu w tym wystąpieniu. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i sprawdza określoną liczbę pozycji znaków.

IndexOf(Char, Int32, Int32)

Zgłasza zerowy indeks pierwszego wystąpienia określonego znaku w tym wystąpieniu. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i sprawdza określoną liczbę pozycji znaków.

IndexOf(String, StringComparison)

Raportuje indeks oparty na zerowym pierwszym wystąpieniu określonego ciągu w bieżącym String obiekcie. Parametr określa typ wyszukiwania do użycia dla określonego ciągu.

IndexOf(String, Int32, StringComparison)

Raportuje indeks oparty na zerowym pierwszym wystąpieniu określonego ciągu w bieżącym String obiekcie. Parametry określają pozycję wyszukiwania początkowego w bieżącym ciągu i typ wyszukiwania do użycia dla określonego ciągu.

IndexOf(Char, StringComparison)

Raportuje indeks zerowy pierwszego wystąpienia określonego znaku Unicode w tym ciągu. Parametr określa typ wyszukiwania do użycia dla określonego znaku.

IndexOf(Char, Int32)

Raportuje indeks zerowy pierwszego wystąpienia określonego znaku Unicode w tym ciągu. Wyszukiwanie rozpoczyna się na określonej pozycji znaku.

IndexOf(String)

Raportuje zerowy indeks pierwszego wystąpienia określonego ciągu w tym wystąpieniu.

IndexOf(Char)

Raportuje indeks zerowy pierwszego wystąpienia określonego znaku Unicode w tym ciągu.

IndexOf(String, Int32)

Raportuje zerowy indeks pierwszego wystąpienia określonego ciągu w tym wystąpieniu. Wyszukiwanie rozpoczyna się na określonej pozycji znaku.

IndexOf(String, Int32, Int32, StringComparison)

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

Raportuje indeks oparty na zerowym pierwszym wystąpieniu określonego ciągu w bieżącym String obiekcie. Parametry określają pozycję wyszukiwania początkowego w bieżącym ciągu, liczbę znaków w bieżącym ciągu do wyszukania oraz typ wyszukiwania do użycia dla określonego ciągu.

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

Parametry

value
String

Ciąg do wyszukania.

startIndex
Int32

Pozycja rozpoczęcia wyszukiwania.

count
Int32

Liczba pozycji znaku do zbadania.

comparisonType
StringComparison

Jedną z wartości wyliczenia, które określa reguły dotyczące wyszukiwania.

Zwraca

Pozycja indeksu na podstawie zera parametru value od początku bieżącego wystąpienia, jeśli ten ciąg zostanie znaleziony, lub -1, jeśli nie. Jeśli value wartość to Empty, zwracana wartość to startIndex.

Wyjątki

value to null.

count lub startIndex jest ujemny.

-lub-

startIndex jest większa niż długość tego wystąpienia.

-lub-

count jest większa niż długość tego ciągu minus startIndex.

comparisonType jest nieprawidłową StringComparison wartością.

Przykłady

W poniższym przykładzie przedstawiono trzy przeciążenia IndexOf metody, które znajdują pierwsze 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.IndexOf(String, ..., StringComparison) methods.

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

class Sample 
{
    public static void Main() 
    {
    string intro = "Find the first 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 StringComparison. Specify the start 
// index and count. 

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

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

// Search using different values of StringComparison. 
    Console.WriteLine("\nPart 3: Neither start index nor count is specified.");
    foreach (StringComparison sc in scValues)
        {
        loc = cat.IndexOf(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 first 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 indeksu rozpoczyna się od 0 (zero). Parametr startIndex może wahać się od 0 do długości wystąpienia ciągu.

Wyszukiwanie zaczyna się od i startIndex kontynuuje do startIndex + count -1. Znak w lokalizacji startIndex + count nie jest uwzględniony w wyszukiwaniu.

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 wielkości liter oraz używania reguł porównania wyrazów lub porządkowych.

Uwagi dotyczące wywoływania

Zestawy znaków zawierają znaki do pominięcia. Są to znaki nieuwzględniane podczas porównywania pod względem językowym lub z uwzględnieniem ustawień kulturowych. W wyszukiwaniu uwzględniającym kulturę (czyli jeśli comparisonType nie Ordinal jest lub OrdinalIgnoreCase), jeśli value zawiera niemożliwy do zignorowania znak, wynik jest odpowiednikiem wyszukiwania z usuniętym znakiem. Jeśli value składa się tylko z jednego lub większej liczby znaków IndexOf(String, Int32, Int32, StringComparison) , metoda zawsze zwraca startIndexwartość , która jest pozycją znaku, w której rozpoczyna się wyszukiwanie.

W poniższym przykładzie IndexOf(String, Int32, Int32, StringComparison) metoda służy do znajdowania pozycji łącznika miękkiego (U+00AD), po którym następuje znak "m" rozpoczynający się od trzeciego do szóstego znaku w dwóch ciągach. Tylko jeden z ciągów zawiera wymagany podciąg. Jeśli przykład jest uruchamiany na .NET Framework 4 lub nowszych, w obu przypadkach, ponieważ łącznik miękki jest znakiem ignorowalnym, metoda zwraca indeks "m" w ciągu, gdy wykonuje porównanie wrażliwe na kulturę. Jednak podczas wykonywania porównania porządkowego znajduje on 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 nie zwraca indeksu łącznika miękkiego, ale zamiast tego zwraca indeks "m", gdy wykonuje porównanie wrażliwe na kulturę. Metoda ta zwraca indeks łącznika nietrwałego w pierwszym ciągu tylko wtedy, gdy wykonuje porównanie porządkowe.

C#
using System;

public class Example
{
    public static void Main()
    {

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

        Console.WriteLine(s1.IndexOf(searchString, 2, 4, StringComparison.CurrentCulture));
        Console.WriteLine(s1.IndexOf(searchString, 2, 4, StringComparison.Ordinal));
        Console.WriteLine(s2.IndexOf(searchString, 2, 4, StringComparison.CurrentCulture));
        Console.WriteLine(s2.IndexOf(searchString, 2, 4, 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

IndexOf(String, Int32, Int32)

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

Raportuje zerowy indeks pierwszego wystąpienia określonego ciągu w tym wystąpieniu. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i sprawdza określoną liczbę pozycji znaków.

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

Parametry

value
String

Ciąg do wyszukania.

startIndex
Int32

Pozycja rozpoczęcia wyszukiwania.

count
Int32

Liczba pozycji znaku do zbadania.

Zwraca

Pozycja indeksu value zera od początku bieżącego wystąpienia, jeśli ten ciąg zostanie znaleziony, lub -1, jeśli nie jest. Jeśli value wartość to Empty, zwracana wartość to startIndex.

Wyjątki

value to null.

count lub startIndex jest ujemny.

-lub-

startIndex jest większa niż długość tego ciągu.

-lub-

count jest większa niż długość tego ciągu minus startIndex.

Przykłady

Poniższy przykład znajduje indeks wszystkich wystąpień ciągu "he" w podciąg innego ciągu. Należy pamiętać, że liczba wyszukiwanych znaków musi zostać ponownie obliczona dla każdej iteracji wyszukiwania.

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

end = str.Length;
start = end/2;
Console.WriteLine();
Console.WriteLine("All occurrences of 'he' from position {0} to {1}.", start, end-1);
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 <= end) && (at > -1))
{
    // start+count must be a position within -str-.
    count = end - start;
    at = str.IndexOf("he", start, count);
    if (at == -1) break;
    Console.Write("{0} ", at);
    start = at+1;
}
Console.WriteLine();

/*
This example produces the following results:

All occurrences of 'he' from position 34 to 68.
0----+----1----+----2----+----3----+----4----+----5----+----6----+---
012345678901234567890123456789012345678901234567890123456789012345678
Now is the time for all good men to come to the aid of their country.

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

*/

Uwagi

Numerowanie indeksu rozpoczyna się od 0 (zero). Parametr startIndex może wahać się od 0 do długości wystąpienia ciągu.

Ta metoda przeprowadza wyszukiwanie wyrazów (wielkość liter i z uwzględnieniem ustawień kulturowych) przy użyciu bieżącej kultury. Wyszukiwanie zaczyna się od i startIndex kontynuuje do startIndex + count -1. Znak w lokalizacji startIndex + count nie jest uwzględniony w wyszukiwaniu.

Zestawy znaków zawierają znaki do pominięcia. Są to znaki nieuwzględniane podczas porównywania pod względem językowym lub z uwzględnieniem ustawień kulturowych. W wyszukiwaniu uwzględniającym kulturę, jeśli value zawiera ignorowany znak, wynik jest odpowiednikiem wyszukiwania z usuniętym znakiem. Jeśli value składa się tylko z jednego lub większej liczby znaków IndexOf(String, Int32, Int32) , metoda zawsze zwraca startIndexwartość , która jest pozycją znaku, w której rozpoczyna się wyszukiwanie. W poniższym przykładzie IndexOf(String, Int32, Int32) metoda służy do znajdowania pozycji łącznika miękkiego (U+00AD), po którym następuje znak "m" rozpoczynający się od trzeciego do szóstego znaku w dwóch ciągach. Tylko jeden z ciągów zawiera wymagany podciąg. Jeśli przykład jest uruchamiany na .NET Framework 4 lub nowszych, w obu przypadkach, ponieważ łącznik miękki jest znakiem ignorowalnym, metoda zwraca indeks "m" w ciągu, gdy wykonuje porównanie wrażliwe na kulturę. Należy pamiętać, że w przypadku pierwszego ciągu, który zawiera łącznik nietrwały, a po nim „m”, metoda nie zwraca indeksu łącznika nietrwałego, ale zamiast tego zwraca indeks „m”.

C#
using System;

public class Example
{
    public static void Main()
    {
        string searchString = "\u00ADm";
        string s1 = "ani\u00ADmal" ;
        string s2 = "animal";

        Console.WriteLine(s1.IndexOf(searchString, 2, 4));
        Console.WriteLine(s2.IndexOf(searchString, 2, 4));

        // The example displays the following output:
        //       4
        //       3
    }
}

Uwagi dotyczące wywoływania

Zgodnie z wyjaśnieniem w artykule Best Practices for Using Strings (Najlepsze rozwiązania dotyczące używania ciągów) zalecamy unikanie wywoływania metod porównania ciągów, które zastępują wartości domyślne i zamiast tego wymagają jawnego określenia parametrów. Aby użyć reguł porównania bieżącej kultury do wykonania tej operacji, zasygnalizuj intencję jawnie, wywołując IndexOf(String, Int32, Int32, StringComparison) przeciążenie metody z wartością parametru CurrentCulturecomparisonType . Jeśli nie potrzebujesz porównania z obsługą języków, rozważ użycie metody 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

IndexOf(Char, Int32, Int32)

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

Zgłasza zerowy indeks pierwszego wystąpienia określonego znaku w tym wystąpieniu. Wyszukiwanie rozpoczyna się od określonej pozycji znaku i sprawdza określoną liczbę pozycji znaków.

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

Parametry

value
Char

Znak Unicode do wyszukiwania.

startIndex
Int32

Pozycja rozpoczęcia wyszukiwania.

count
Int32

Liczba pozycji znaku do zbadania.

Zwraca

Pozycja indeksu value zera od początku ciągu, jeśli ten znak zostanie znaleziony, lub -1, jeśli nie jest.

Wyjątki

count lub startIndex jest ujemny.

-lub-

startIndex jest większa niż długość tego ciągu.

-lub-

count jest większa niż długość tego ciągu minus startIndex.

Przykłady

W poniższym przykładzie pokazano metodę IndexOf .

C#
// Example for the String.IndexOf( char, int, int ) method.
using System;

class IndexOfCII 
{
    public static void Main() 
    {
        string br1 = 
            "0----+----1----+----2----+----3----+----" +
            "4----+----5----+----6----+----7";
        string br2 = 
            "0123456789012345678901234567890123456789" +
            "0123456789012345678901234567890";
        string str = 
            "ABCDEFGHI abcdefghi ABCDEFGHI abcdefghi " +
            "ABCDEFGHI abcdefghi ABCDEFGHI";

        Console.WriteLine( 
            "This example of String.IndexOf( char, int, int )\n" +
            "generates the following output." );
        Console.WriteLine( 
            "{0}{1}{0}{2}{0}{3}{0}", 
            Environment.NewLine, br1, br2, str );

        FindAllChar( 'A', str );
        FindAllChar( 'a', str );
        FindAllChar( 'I', str );
        FindAllChar( 'i', str );
        FindAllChar( '@', str );
        FindAllChar( ' ', str );
    }

    static void FindAllChar( Char target, String searched )
    {
        Console.Write( 
            "The character '{0}' occurs at position(s): ", 
            target );

        int     startIndex = -1;
        int     hitCount = 0;

        // Search for all occurrences of the target.
        while( true )
        {
            startIndex = searched.IndexOf( 
                target, startIndex + 1, 
                searched.Length - startIndex - 1 );

            // Exit the loop if the target is not found.
            if( startIndex < 0 )
                break;

            Console.Write( "{0}, ", startIndex );
            hitCount++;
        }

        Console.WriteLine( "occurrences: {0}", hitCount );
    }
}

/*
This example of String.IndexOf( char, int, int )
generates the following output.

0----+----1----+----2----+----3----+----4----+----5----+----6----+----7
01234567890123456789012345678901234567890123456789012345678901234567890
ABCDEFGHI abcdefghi ABCDEFGHI abcdefghi ABCDEFGHI abcdefghi ABCDEFGHI

The character 'A' occurs at position(s): 0, 20, 40, 60, occurrences: 4
The character 'a' occurs at position(s): 10, 30, 50, occurrences: 3
The character 'I' occurs at position(s): 8, 28, 48, 68, occurrences: 4
The character 'i' occurs at position(s): 18, 38, 58, occurrences: 3
The character '@' occurs at position(s): occurrences: 0
The character ' ' occurs at position(s): 9, 19, 29, 39, 49, 59, occurrences: 6
*/

Uwagi

Wyszukiwanie zaczyna się od i startIndex kontynuuje do startIndex + count -1. Znak w lokalizacji startIndex + count nie jest uwzględniony w wyszukiwaniu.

Numerowanie indeksu rozpoczyna się od 0 (zero). Parametr startIndex może wahać się od 0 do długości wystąpienia ciągu.

Ta metoda przeprowadza wyszukiwanie porządkowe (niewrażliwość na ustawienia kulturowe), gdzie znak jest uważany 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 CompareInfo.IndexOf metody , w której wartość skalarna Unicode reprezentująca znak wstępnie skompilowany, taki jak ligatura "Æ" (U+00C6), może być traktowana jako odpowiednik dowolnego wystąpienia składników znaku w poprawnej kolejności, 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

IndexOf(String, StringComparison)

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

Raportuje indeks oparty na zerowym pierwszym wystąpieniu określonego ciągu w bieżącym String obiekcie. Parametr określa typ wyszukiwania do użycia dla określonego ciągu.

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

Parametry

value
String

Ciąg do wyszukania.

comparisonType
StringComparison

Jedną z wartości wyliczenia, które określa reguły dotyczące wyszukiwania.

Zwraca

Pozycja indeksu parametru value , jeśli ten ciąg zostanie znaleziony, lub -1, jeśli nie jest. Jeśli value wartość to Empty, zwracana wartość to 0.

Wyjątki

value to null.

comparisonType jest nieprawidłową StringComparison wartością.

Przykłady

W poniższym przykładzie przedstawiono trzy przeciążenia IndexOf metody, które znajdują pierwsze 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.IndexOf(String, ..., StringComparison) methods.

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

class Sample 
{
    public static void Main() 
    {
    string intro = "Find the first 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 StringComparison. Specify the start 
// index and count. 

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

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

// Search using different values of StringComparison. 
    Console.WriteLine("\nPart 3: Neither start index nor count is specified.");
    foreach (StringComparison sc in scValues)
        {
        loc = cat.IndexOf(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 first 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

Indeks numerowania rozpoczyna się od zera.

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 wielkości liter oraz używania reguł porównania wyrazów lub porządkowych.

Uwagi dotyczące wywoływania

Zestawy znaków zawierają znaki do pominięcia. Są to znaki nieuwzględniane podczas porównywania pod względem językowym lub z uwzględnieniem ustawień kulturowych. W wyszukiwaniu uwzględniającym kulturę (czyli jeśli comparisonType nie Ordinal jest lub OrdinalIgnoreCase), jeśli value zawiera niemożliwy do zignorowania znak, wynik jest odpowiednikiem wyszukiwania z usuniętym znakiem. Jeśli value składa się tylko z jednego lub większej liczby znaków IndexOf(String, StringComparison) , metoda zawsze zwraca wartość 0 (zero), aby wskazać, że dopasowanie zostanie znalezione na początku bieżącego wystąpienia.

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

C#
using System;

public class Example
{
    public static void Main()
    {
        string s1 = "ani\u00ADmal";
        string s2 = "animal";
      
        Console.WriteLine("Culture-sensitive comparison:");
        // Use culture-sensitive comparison to find the soft hyphen.
        Console.WriteLine(s1.IndexOf("\u00AD", StringComparison.CurrentCulture));
        Console.WriteLine(s2.IndexOf("\u00AD", StringComparison.CurrentCulture));
      
        // Use culture-sensitive comparison to find the soft hyphen followed by "n".
        Console.WriteLine(s1.IndexOf("\u00ADn", StringComparison.CurrentCulture));
        Console.WriteLine(s2.IndexOf("\u00ADn", StringComparison.CurrentCulture));
      
        // Use culture-sensitive comparison to find the soft hyphen followed by "m".
        Console.WriteLine(s1.IndexOf("\u00ADm", StringComparison.CurrentCulture));
        Console.WriteLine(s2.IndexOf("\u00ADm", StringComparison.CurrentCulture));
      
        Console.WriteLine("Ordinal comparison:");
        // Use ordinal comparison to find the soft hyphen.
        Console.WriteLine(s1.IndexOf("\u00AD", StringComparison.Ordinal));
        Console.WriteLine(s2.IndexOf("\u00AD", StringComparison.Ordinal));
      
        // Use ordinal comparison to find the soft hyphen followed by "n".
        Console.WriteLine(s1.IndexOf("\u00ADn", StringComparison.Ordinal));
        Console.WriteLine(s2.IndexOf("\u00ADn", StringComparison.Ordinal));
      
        // Use ordinal comparison to find the soft hyphen followed by "m".
        Console.WriteLine(s1.IndexOf("\u00ADm", StringComparison.Ordinal));
        Console.WriteLine(s2.IndexOf("\u00ADm", StringComparison.Ordinal));

        // The example displays the following output:
        //       Culture-sensitive comparison:
        //       0
        //       0
        //       1
        //       1
        //       4
        //       3
        //       Ordinal comparison:
        //       3
        //       -1
        //       -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

IndexOf(String, Int32, StringComparison)

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

Raportuje indeks oparty na zerowym pierwszym wystąpieniu określonego ciągu w bieżącym String obiekcie. Parametry określają pozycję wyszukiwania początkowego w bieżącym ciągu i typ wyszukiwania do użycia dla określonego ciągu.

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

Parametry

value
String

Ciąg do wyszukania.

startIndex
Int32

Pozycja rozpoczęcia wyszukiwania.

comparisonType
StringComparison

Jedną z wartości wyliczenia, które określa reguły dotyczące wyszukiwania.

Zwraca

Pozycja indeksu na podstawie zera parametru value od początku bieżącego wystąpienia, jeśli ten ciąg zostanie znaleziony, lub -1, jeśli nie. Jeśli value wartość to Empty, zwracana wartość to startIndex.

Wyjątki

value to null.

startIndex jest mniejsza niż 0 (zero) lub większa niż długość tego ciągu.

comparisonType jest nieprawidłową StringComparison wartością.

Przykłady

W poniższym przykładzie przedstawiono trzy przeciążenia IndexOf metody, które znajdują pierwsze 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.IndexOf(String, ..., StringComparison) methods.

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

class Sample 
{
    public static void Main() 
    {
    string intro = "Find the first 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 StringComparison. Specify the start 
// index and count. 

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

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

// Search using different values of StringComparison. 
    Console.WriteLine("\nPart 3: Neither start index nor count is specified.");
    foreach (StringComparison sc in scValues)
        {
        loc = cat.IndexOf(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 first 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 0. Parametr startIndex może wahać się od 0 do długości wystąpienia ciągu. Jeśli startIndex jest równa długości wystąpienia ciągu, metoda zwraca wartość -1.

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 wielkości liter oraz używania reguł porównania wyrazów lub porządkowych.

Uwagi dotyczące wywoływania

Zestawy znaków zawierają znaki do pominięcia. Są to znaki nieuwzględniane podczas porównywania pod względem językowym lub z uwzględnieniem ustawień kulturowych. W wyszukiwaniu uwzględniającym kulturę (czyli jeśli comparisonType nie Ordinal jest lub OrdinalIgnoreCase), jeśli value zawiera niemożliwy do zignorowania znak, wynik jest odpowiednikiem wyszukiwania z usuniętym znakiem. Jeśli value składa się tylko z jednego lub większej liczby znaków IndexOf(String, Int32, StringComparison) , metoda zawsze zwraca startIndexwartość , która jest pozycją znaku, w której rozpoczyna się wyszukiwanie.

W poniższym przykładzie IndexOf(String, Int32, StringComparison) metoda służy do znajdowania pozycji łącznika miękkiego (U+00AD), a następnie znaku "m" rozpoczynającego się od trzeciego położenia znaku w dwóch ciągach. Tylko jeden z ciągów zawiera wymagany podciąg. Jeśli przykład jest uruchamiany na .NET Framework 4 lub nowszych, w obu przypadkach, ponieważ łącznik miękki jest znakiem ignorowalnym, metoda zwraca indeks "m" w ciągu, gdy wykonuje porównanie wrażliwe na kulturę. Należy pamiętać, że w przypadku pierwszego ciągu, który zawiera łącznik nietrwały, a po nim „m”, metoda nie zwraca indeksu łącznika nietrwałego, ale zamiast tego zwraca indeks „m”. Metoda ta zwraca indeks łącznika nietrwałego w pierwszym ciągu tylko wtedy, gdy wykonuje porównanie porządkowe.

C#
using System;

public class Example
{
    public static void Main()
    {
      
        string searchString = "\u00ADm";
        string s1 = "ani\u00ADmal" ;
        string s2 = "animal";

        Console.WriteLine(s1.IndexOf(searchString, 2, StringComparison.CurrentCulture));
        Console.WriteLine(s1.IndexOf(searchString, 2, StringComparison.Ordinal));
        Console.WriteLine(s2.IndexOf(searchString, 2, StringComparison.CurrentCulture));
        Console.WriteLine(s2.IndexOf(searchString, 2, 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

IndexOf(Char, StringComparison)

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

Raportuje indeks zerowy pierwszego wystąpienia określonego znaku Unicode w tym ciągu. Parametr określa typ wyszukiwania do użycia dla określonego znaku.

C#
public int IndexOf (char value, StringComparison comparisonType);

Parametry

value
Char

Znak do wyszukiwania.

comparisonType
StringComparison

Wartość wyliczenia określająca reguły wyszukiwania.

Zwraca

Indeks oparty na zera, jeśli ten znak zostanie znaleziony value , lub -1, jeśli nie jest.

Wyjątki

comparisonType jest nieprawidłową StringComparison wartością.

Uwagi

Indeks numerowania rozpoczyna się od zera.

Parametr comparisonType jest elementem StringComparison członkowskim wyliczenia, który określa, czy wyszukiwanie value argumentu używa bieżącej lub niezmiennej kultury, jest rozróżniana wielkość liter lub bez uwzględniania wielkości liter, czy używa reguł porównania wyrazów lub porządkowych.

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

IndexOf(Char, Int32)

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

Raportuje indeks zerowy pierwszego wystąpienia określonego znaku Unicode w tym ciągu. Wyszukiwanie rozpoczyna się na określonej pozycji znaku.

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

Parametry

value
Char

Znak Unicode do wyszukiwania.

startIndex
Int32

Pozycja rozpoczęcia wyszukiwania.

Zwraca

Pozycja indeksu value zera od początku ciągu, jeśli ten znak zostanie znaleziony, lub -1, jeśli nie jest.

Wyjątki

startIndex jest mniejsza niż 0 (zero) lub większa niż długość ciągu.

Przykłady

W poniższym przykładzie pokazano metodę IndexOf .

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

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

at = 0;
start = 0;
while((start < str.Length) && (at > -1))
{
    at = str.IndexOf('t', start);
    if (at == -1) break;
    Console.Write("{0} ", at);
    start = at+1;
}
Console.WriteLine();

/*
This example produces the following results:

All occurrences of 't' from position 0 to 68.
0----+----1----+----2----+----3----+----4----+----5----+----6----+---
012345678901234567890123456789012345678901234567890123456789012345678
Now is the time for all good men to come to the aid of their country.

The letter 't' occurs at position(s): 7 11 33 41 44 55 65

*/

Uwagi

Numerowanie indeksów rozpoczyna się od 0. Parametr startIndex może wahać się od 0 do długości wystąpienia ciągu. Jeśli startIndex jest równa długości wystąpienia ciągu, metoda zwraca wartość -1.

Wyszukiwanie waha się od startIndex końca ciągu.

Ta metoda przeprowadza wyszukiwanie porządkowe (niewrażliwość na ustawienia kulturowe), gdzie znak jest uważany 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 CompareInfo.IndexOf metody , w której wartość skalarna Unicode reprezentująca znak wstępnie skompilowany, taki jak ligatura "Æ" (U+00C6), może być traktowana jako odpowiednik dowolnego wystąpienia składników znaku w poprawnej kolejności, 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

IndexOf(String)

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

Raportuje zerowy indeks pierwszego wystąpienia określonego ciągu w tym wystąpieniu.

C#
public int IndexOf (string value);

Parametry

value
String

Ciąg do wyszukania.

Zwraca

Położenie indeksu opartego na value zera, jeśli ten ciąg zostanie znaleziony, lub -1, jeśli nie jest. Jeśli value wartość to Empty, zwracana wartość to 0.

Wyjątki

value to null.

Przykłady

Poniższy przykład wyszukuje ciąg "n" w obszarze "zwierzę". Ponieważ indeksy ciągów zaczynają się od zera, a nie jeden, IndexOf(String) metoda wskazuje, że wartość "n" znajduje się na pozycji 1.

C#
String str = "animal";
String toFind = "n";
int index = str.IndexOf("n");
Console.WriteLine("Found '{0}' in '{1}' at position {2}",
                toFind, str, index);

// The example displays the following output:
//        Found 'n' in 'animal' at position 1

W poniższym przykładzie IndexOf użyto metody w celu określenia pozycji początkowej nazwy zwierzęcia w zdaniu. Następnie używa tej pozycji, aby wstawić przymiotnik, który opisuje zwierzę w zdaniu.

C#
using System;

public class Example {
    public static void Main()
    {
        string animal1 = "fox";
        string animal2 = "dog";

        string strTarget = String.Format("The {0} jumps over the {1}.",
                                         animal1, animal2);

        Console.WriteLine("The original string is:{0}{1}{0}",
                          Environment.NewLine, strTarget);

        Console.Write("Enter an adjective (or group of adjectives) " +
                      "to describe the {0}: ==> ", animal1);
        string adj1 = Console.ReadLine();

        Console.Write("Enter an adjective (or group of adjectives) " +
                      "to describe the {0}: ==> ", animal2);
        string adj2 = Console.ReadLine();

        adj1 = adj1.Trim() + " ";
        adj2 = adj2.Trim() + " ";

        strTarget = strTarget.Insert(strTarget.IndexOf(animal1), adj1);
        strTarget = strTarget.Insert(strTarget.IndexOf(animal2), adj2);

        Console.WriteLine("{0}The final string is:{0}{1}",
                          Environment.NewLine, strTarget);
    }
}
// Output from the example might appear as follows:
//       The original string is:
//       The fox jumps over the dog.
//
//       Enter an adjective (or group of adjectives) to describe the fox: ==> bold
//       Enter an adjective (or group of adjectives) to describe the dog: ==> lazy
//
//       The final string is:
//       The bold fox jumps over the lazy dog.

Uwagi

Indeks numerowania rozpoczyna się od zera.

Ta metoda przeprowadza wyszukiwanie wyrazów (wielkość liter i z uwzględnieniem ustawień kulturowych) przy użyciu bieżącej kultury. Wyszukiwanie rozpoczyna się od pierwszego położenia znaku tego wystąpienia i trwa do ostatniego położenia znaku.

Zestawy znaków zawierają znaki do pominięcia. Są to znaki nieuwzględniane podczas porównywania pod względem językowym lub z uwzględnieniem ustawień kulturowych. W wyszukiwaniu uwzględniającym kulturę, jeśli value zawiera ignorowany znak, wynik jest odpowiednikiem wyszukiwania z usuniętym znakiem. Jeśli value składa się tylko z jednego lub większej liczby znaków IndexOf(String) , metoda zawsze zwraca wartość 0 (zero), aby wskazać, że dopasowanie zostanie znalezione na początku bieżącego wystąpienia. W poniższym przykładzie IndexOf(String) metoda służy do znajdowania trzech podciągów (łącznika miękkiego (U+00AD), łącznika miękkiego, po którym następuje znak "n", a następnie łącznik miękki, po którym następuje "m") w dwóch ciągach. Tylko jeden z ciągów zawiera łącznik nietrwały. Jeśli przykład jest uruchamiany na .NET Framework 4 lub nowszym, w każdym przypadku, ponieważ łącznik miękki jest znakiem nie do zignorowania, wynik jest taki sam, jak w przypadku nieuwzględnionego łącznika nieuwzględnionego w valueelemencie . Podczas wyszukiwania tylko łącznika nietrwałego metoda zwraca wartość 0 (zero), aby wskazać, że na początku ciągu odnaleziono dopasowanie.

C#
using System;

public class Example
{
    public static void Main()
    {
        string s1 = "ani\u00ADmal";
        string s2 = "animal";
      
        // Find the index of the soft hyphen.
        Console.WriteLine(s1.IndexOf("\u00AD"));
        Console.WriteLine(s2.IndexOf("\u00AD"));
      
        // Find the index of the soft hyphen followed by "n".
        Console.WriteLine(s1.IndexOf("\u00ADn"));
        Console.WriteLine(s2.IndexOf("\u00ADn"));
      
        // Find the index of the soft hyphen followed by "m".
        Console.WriteLine(s1.IndexOf("\u00ADm"));
        Console.WriteLine(s2.IndexOf("\u00ADm"));

        // The example displays the following output
        // if run under the .NET Framework 4 or later:
        //       0
        //       0
        //       1
        //       1
        //       4
        //       3
    }
}

Uwagi dotyczące wywoływania

Zgodnie z wyjaśnieniem w artykule Best Practices for Using Strings (Najlepsze rozwiązania dotyczące używania ciągów) zalecamy unikanie wywoływania metod porównania ciągów, które zastępują wartości domyślne i zamiast tego wymagają jawnego określenia parametrów. Aby znaleźć pierwszy indeks podciągów w wystąpieniu ciągu przy użyciu reguł porównania bieżącej kultury, zasygnalizuj zamiar jawnie przez wywołanie IndexOf(String, StringComparison) przeciążenia metody z wartością CurrentCulture dla jego comparisonType parametru. Jeśli nie potrzebujesz porównania z obsługą języków, rozważ użycie metody 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

IndexOf(Char)

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

Raportuje indeks zerowy pierwszego wystąpienia określonego znaku Unicode w tym ciągu.

C#
public int IndexOf (char value);

Parametry

value
Char

Znak Unicode do wyszukiwania.

Zwraca

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

Przykłady

W poniższym przykładzie pokazano, jak można wyszukać String znak przy użyciu IndexOf metody .

C#
// Create a Unicode string with 5 Greek Alpha characters.
String szGreekAlpha = new String('\u0391',5);

// Create a Unicode string with 3 Greek Omega characters.
String szGreekOmega = "\u03A9\u03A9\u03A9";

String szGreekLetters = String.Concat(szGreekOmega, szGreekAlpha, 
                                    szGreekOmega.Clone());

// Display the entire string.
Console.WriteLine("The string: {0}", szGreekLetters);

// The first index of Alpha.
int ialpha = szGreekLetters.IndexOf('\u0391');
// The first index of Omega.
int iomega = szGreekLetters.IndexOf('\u03A9');

Console.WriteLine("First occurrence of the Greek letter Alpha: Index {0}", 
                ialpha);
Console.WriteLine("First occurrence of the Greek letter Omega: Index {0}", 
                iomega);

// The example displays the following output:
//    The string: ΩΩΩΑΑΑΑΑΩΩΩ
//    First occurrence of the Greek letter Alpha: Index 3
//    First occurrence of the Greek letter Omega: Index 0

Uwagi

Indeks numerowania rozpoczyna się od zera.

Ta metoda przeprowadza wyszukiwanie porządkowe (niewrażliwość na ustawienia kulturowe), gdzie znak jest uważany 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 CompareInfo.IndexOf metody , w której wartość skalarna Unicode reprezentująca znak wstępnie skompilowany, taki jak ligatura "Æ" (U+00C6), może być traktowana jako odpowiednik dowolnego wystąpienia składników znaku w poprawnej kolejności, 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

IndexOf(String, Int32)

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

Raportuje zerowy indeks pierwszego wystąpienia określonego ciągu w tym wystąpieniu. Wyszukiwanie rozpoczyna się na określonej pozycji znaku.

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

Parametry

value
String

Ciąg do wyszukania.

startIndex
Int32

Pozycja rozpoczęcia wyszukiwania.

Zwraca

Pozycja indeksu value zera od początku bieżącego wystąpienia, jeśli ten ciąg zostanie znaleziony, lub -1, jeśli nie jest. Jeśli value wartość to Empty, zwracana wartość to startIndex.

Wyjątki

value to null.

startIndex jest mniejsza niż 0 (zero) lub większa niż długość tego ciągu.

Przykłady

Poniższy przykład wyszukuje wszystkie wystąpienia określonego ciągu w ciągu docelowym.

C#
using System;

public class IndexOfTest {
    public static void Main() {

        string strSource = "This is the string which we will perform the search on";

        Console.WriteLine("The search string is:{0}\"{1}\"{0}", Environment.NewLine, strSource);

        string strTarget = "";
        int found = 0;
        int totFinds = 0;

        do {
            Console.Write("Please enter a search value to look for in the above string (hit Enter to exit) ==> ");

            strTarget = Console.ReadLine();

            if (strTarget != "") {

                for (int i = 0; i < strSource.Length; i++) {

                    found = strSource.IndexOf(strTarget, i);

                    if (found >= 0) {
                        totFinds++;
                        i = found;
                    }
                    else
                    {
                        break;
                    }
                }
            }
            else
            {
                return;
            }

            Console.WriteLine("{0}The search parameter '{1}' was found {2} times.{0}",
                    Environment.NewLine, strTarget, totFinds);

            totFinds = 0;
        } while ( true );
    }
}

Uwagi

Numerowanie indeksów rozpoczyna się od 0. Parametr startIndex może wahać się od 0 do długości wystąpienia ciągu. Jeśli startIndex jest równa długości wystąpienia ciągu, metoda zwraca wartość -1.

Ta metoda przeprowadza wyszukiwanie wyrazów (wielkość liter i z uwzględnieniem ustawień kulturowych) przy użyciu bieżącej kultury. Wyszukiwanie rozpoczyna się od startIndex pozycji znaku tego wystąpienia i trwa do ostatniego położenia znaku.

Zestawy znaków zawierają znaki do pominięcia. Są to znaki nieuwzględniane podczas porównywania pod względem językowym lub z uwzględnieniem ustawień kulturowych. W wyszukiwaniu uwzględniającym kulturę, jeśli value zawiera ignorowany znak, wynik jest odpowiednikiem wyszukiwania z usuniętym znakiem. Jeśli value składa się tylko z jednego lub większej liczby znaków IndexOf(String, Int32) , metoda zawsze zwraca startIndexwartość , która jest pozycją znaku, w której rozpoczyna się wyszukiwanie. W poniższym przykładzie IndexOf(String, Int32) metoda służy do znajdowania pozycji łącznika miękkiego (U+00AD), po którym następuje znak "m" w dwóch ciągach. Tylko jeden z ciągów zawiera wymagany podciąg. Jeśli przykład jest uruchamiany na .NET Framework 4 lub nowszym, w obu przypadkach, ponieważ łącznik miękki jest znakiem nie do zignorowania, metoda zwraca indeks "m" w ciągu. Należy pamiętać, że w przypadku pierwszego ciągu, który zawiera łącznik nietrwały, a po nim „m”, metoda nie zwraca indeksu łącznika nietrwałego, ale zamiast tego zwraca indeks „m”.

C#
using System;

public class Example
{
    public static void Main()
    {
        string searchString = "\u00ADm";
        string s1 = "ani\u00ADmal" ;
        string s2 = "animal";

        Console.WriteLine(s1.IndexOf(searchString, 2));
        Console.WriteLine(s2.IndexOf(searchString, 2));

        // The example displays the following output:
        //       4
        //       3
    }
}

Uwagi dotyczące wywoływania

Zgodnie z wyjaśnieniem w artykule Best Practices for Using Strings (Najlepsze rozwiązania dotyczące używania ciągów) zalecamy unikanie wywoływania metod porównania ciągów, które zastępują wartości domyślne i zamiast tego wymagają jawnego określenia parametrów. Aby znaleźć pierwszy indeks podciągów, który występuje po określonej pozycji znaku przy użyciu reguł porównania bieżącej kultury, zasygnalizuj zamiar jawnie, wywołując IndexOf(String, Int32, StringComparison) przeciążenie metody z wartością parametru CurrentCulturecomparisonType . Jeśli nie potrzebujesz porównania z obsługą języków, rozważ użycie metody 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