String.IndexOf Метод

Определение

Возвращает индекс с отсчетом от нуля первого вхождения указанного символа Юникода или строки в пределах данного экземпляра. Метод возвращает -1, если знак или строка не найдена в данном экземпляре.

Перегрузки

IndexOf(String, Int32, Int32, StringComparison)

Возвращает индекс с отсчетом от нуля первого вхождения указанной строки в текущем объекте String. Параметры задают начальную позицию поиска в текущей строке, количество проверяемых знаков текущей строки и тип поиска.

IndexOf(String, Int32, Int32)

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

IndexOf(Char, Int32, Int32)

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

IndexOf(String, StringComparison)

Возвращает индекс с отсчетом от нуля первого вхождения указанной строки в текущем объекте String. Параметр определяет тип поиска заданной строки.

IndexOf(String, Int32, StringComparison)

Возвращает индекс с отсчетом от нуля первого вхождения указанной строки в текущем объекте String. Параметры задают начальную позицию поиска в текущей строке и тип поиска.

IndexOf(Char, StringComparison)

Возвращает индекс с отсчетом от нуля первого вхождения указанного символа Юникода в данной строке. Параметр определяет тип поиска заданного символа.

IndexOf(Char, Int32)

Возвращает индекс с отсчетом от нуля первого вхождения указанного символа Юникода в данной строке. Поиск начинается с указанной позиции знака.

IndexOf(String)

Возвращает индекс с отсчетом от нуля первого вхождения значения указанной строки в данном экземпляре.

IndexOf(Char)

Возвращает индекс с отсчетом от нуля первого вхождения указанного символа Юникода в данной строке.

IndexOf(String, Int32)

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

IndexOf(String, Int32, Int32, StringComparison)

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

Возвращает индекс с отсчетом от нуля первого вхождения указанной строки в текущем объекте String. Параметры задают начальную позицию поиска в текущей строке, количество проверяемых знаков текущей строки и тип поиска.

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

Параметры

value
String

Строка для поиска.

startIndex
Int32

Позиция, с которой начинается поиск.

count
Int32

Количество позиций знаков для проверки.

comparisonType
StringComparison

Одно из значений перечисления, определяющее правила поиска.

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

Отсчитываемая от нуля позиция параметра value с начала текущего экземпляра, если строка найдена, или -1, если нет. Если значение параметра value равно Empty, возвращаемым значением является startIndex.

Исключения

value имеет значение null.

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

-или-

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

-или-

count больше, чем длина этой строки минус startIndex.

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

Примеры

В следующем примере показаны три перегрузки IndexOf метода , которые находят первое вхождение строки в другой строке с помощью различных значений StringComparison перечисления .

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

*/

Комментарии

Нумерация индекса начинается с 0 (ноль). Параметр startIndex может иметь значение в диапазоне от 0 до длины экземпляра строки.

Поиск начинается с startIndex и продолжается до startIndex + count -1. Символ в startIndex + count не включается в поиск.

Параметр comparisonType указывает на value поиск параметра с использованием текущего или инвариантного языка и региональных параметров, поиска с учетом регистра или без учета регистра, а также правил сравнения слов или порядковых номеров.

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

Наборы символов содержат игнорируемые символы, то есть символы, которые не учитываются при выполнении лингвистического сравнения или сравнения с учетом языка и региональных параметров. Если при поиске с учетом языка и региональных параметров (то есть, если параметр comparisonType не имеет значение Ordinal или OrdinalIgnoreCase) параметр value содержит игнорируемый символ, результат аналогичен поиску с удаленным этим символом. Если value состоит только из одного или нескольких игнорируемых символов, IndexOf(String, Int32, Int32, StringComparison) метод всегда возвращает startIndexзначение , которое является позицией символа, с которой начинается поиск.

В следующем примере метод используется для поиска позиции мягкого дефиса (U+00AD), за которым следует буква "m", IndexOf(String, Int32, Int32, StringComparison) начиная с третьей по шестую позицию символов в двух строках. Только одна из строк содержит требуемую подстроку. Если пример выполняется на платформа .NET Framework 4 или более поздней версии, в обоих случаях, так как мягкий дефис является игнорируемым символом, метод возвращает индекс "m" в строке при сравнении с учетом языка и региональных параметров. Однако при выполнении порядкового сравнения она находит подстроку только в первой строке. Обратите внимание, что в случае с первой строкой, которая включает в себя мягкий дефис, за которым следует "m", метод не возвращает индекс мягкого дефиса, а вместо этого возвращает индекс "m" при сравнении с учетом языка и региональных параметров. Этот метод возвращает индекс мягкого переноса в первой строке только при выполнении порядкового сравнения.

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
    }
}

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

.NET 9 және басқа нұсқалар
Өнім Нұсқалар
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 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)

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

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

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

Параметры

value
String

Строка для поиска.

startIndex
Int32

Позиция, с которой начинается поиск.

count
Int32

Количество позиций знаков для проверки.

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

Отсчитываемая от нуля позиция индекса параметра value с начала текущего экземпляра, если строка найдена. Значение –1, если строка не найдена. Если значение параметра value равно Empty, возвращаемым значением является startIndex.

Исключения

value имеет значение null.

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

-или-

startIndex больше длины этой строки.

-или-

count больше, чем длина этой строки минус startIndex.

Примеры

В следующем примере выполняется поиск индекса всех вхождений строки "he" в подстроке другой строки. Обратите внимание, что количество символов для поиска должно быть пересчитано для каждой итерации поиска.

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

*/

Комментарии

Нумерация индекса начинается с 0 (ноль). Параметр startIndex может иметь значение в диапазоне от 0 до длины экземпляра строки.

Этот метод выполняет поиск слов (с учетом регистра и языка и региональных параметров) с использованием текущего языка и региональных параметров. Поиск начинается с startIndex и продолжается до startIndex + count -1. Символ в startIndex + count не включается в поиск.

Наборы символов содержат игнорируемые символы, то есть символы, которые не учитываются при выполнении лингвистического сравнения или сравнения с учетом языка и региональных параметров. Если при поиске с учетом языка и региональных параметров параметр value содержит игнорируемый символ, результат аналогичен поиску с удаленным этим символом. Если value состоит только из одного или нескольких игнорируемых символов, IndexOf(String, Int32, Int32) метод всегда возвращает startIndexзначение , которое является позицией символа, с которой начинается поиск. В следующем примере метод используется для поиска позиции мягкого дефиса (U+00AD), за которым следует буква "m", IndexOf(String, Int32, Int32) начиная с третьей по шестую позицию символов в двух строках. Только одна из строк содержит требуемую подстроку. Если пример выполняется на платформа .NET Framework 4 или более поздней версии, в обоих случаях, так как мягкий дефис является игнорируемым символом, метод возвращает индекс "m" в строке при сравнении с учетом языка и региональных параметров. Обратите внимание, что в случае первой строки, содержащей мягкий перенос перед буквой "m", этот метод возвращает не индекс мягкого переноса, а индекс буквы "m".

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
    }
}

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

Как описано в статье Рекомендации по использованию строк, рекомендуется избегать вызова методов сравнения строк, которые заменяют значения по умолчанию, и вместо этого вызывать методы, требующие явного указания параметров. Чтобы использовать правила сравнения текущего языка и региональных параметров для выполнения этой операции, явно сообщите о своем намерении, вызвав перегрузку IndexOf(String, Int32, Int32, StringComparison) метода со значением CurrentCulture для его comparisonType параметра. Если вам не требуется лингвистическое сравнение, рассмотрите возможность использования Ordinal.

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

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

.NET 9 және басқа нұсқалар
Өнім Нұсқалар
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

IndexOf(Char, Int32, Int32)

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

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

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

Параметры

value
Char

Искомый знак Юникода.

startIndex
Int32

Позиция, с которой начинается поиск.

count
Int32

Количество позиций знаков для проверки.

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

Отсчитываемая от нуля позиция индекса параметра value с начала строки, если символ найден. Значение –1, если символ не найден.

Исключения

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

-или-

startIndex больше длины этой строки.

-или-

count больше, чем длина этой строки минус startIndex.

Примеры

В следующем примере демонстрируется IndexOf метод.

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

Комментарии

Поиск начинается с startIndex и продолжается до startIndex + count -1. Символ в startIndex + count не включается в поиск.

Нумерация индекса начинается с 0 (ноль). Параметр startIndex может иметь значение в диапазоне от 0 до длины экземпляра строки.

Этот метод выполняет порядковый поиск (без учета языка и региональных параметров), при котором символ считается эквивалентным другому символу только в том случае, если скалярные значения Юникода совпадают. Чтобы выполнить поиск с учетом языка и региональных параметров, используйте CompareInfo.IndexOf метод , в котором скалярное значение Юникода, представляющее предварительно скомпилированные символы, например лигатуру "Æ" (U+00C6), может считаться эквивалентным любому вхождениям компонентов символа в правильной последовательности, например "AE" (U+0041, U+0045), в зависимости от языка и региональных параметров.

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

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

.NET 9 және басқа нұсқалар
Өнім Нұсқалар
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

IndexOf(String, StringComparison)

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

Возвращает индекс с отсчетом от нуля первого вхождения указанной строки в текущем объекте String. Параметр определяет тип поиска заданной строки.

public int IndexOf (string value, StringComparison comparisonType);

Параметры

value
String

Строка для поиска.

comparisonType
StringComparison

Одно из значений перечисления, определяющее правила поиска.

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

Индекс позиции строки, заданной в параметре value, если она найдена, и -1, если нет. Если значение value равно Empty, то возвращаемое значение равно 0.

Исключения

value имеет значение null.

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

Примеры

В следующем примере показаны три перегрузки IndexOf метода , которые находят первое вхождение строки в другой строке с помощью различных значений StringComparison перечисления .

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

*/

Комментарии

Нумерация индекса начинается с нуля.

Параметр comparisonType указывает на value поиск параметра с использованием текущего или инвариантного языка и региональных параметров, поиска с учетом регистра или без учета регистра, а также правил сравнения слов или порядковых номеров.

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

Наборы символов содержат игнорируемые символы, то есть символы, которые не учитываются при выполнении лингвистического сравнения или сравнения с учетом языка и региональных параметров. Если при поиске с учетом языка и региональных параметров (то есть, если параметр comparisonType не имеет значение Ordinal или OrdinalIgnoreCase) параметр value содержит игнорируемый символ, результат аналогичен поиску с удаленным этим символом. Если value состоит только из одного или нескольких игнорируемых символов, IndexOf(String, StringComparison) метод всегда возвращает значение 0 (ноль), чтобы указать, что совпадение найдено в начале текущего экземпляра.

В следующем примере IndexOf(String, StringComparison) метод используется для поиска трех подстрок (мягкий дефис (U+00AD), мягкий дефис, за которым следует "n", и мягкий дефис, за которым следует "m") в двух строках. Только одна из строк содержит мягкий перенос. Если пример выполняется на платформа .NET Framework 4 или более поздней версии, так как мягкий дефис является игнорируемым символом, поиск с учетом языка и региональных параметров возвращает то же значение, которое возвращается, если бы мягкий дефис не был включен в строку поиска. Однако порядковый поиск успешно находит мягкий дефис в одной строке и сообщает, что он отсутствует во второй строке.

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
    }
}

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

.NET 9 және басқа нұсқалар
Өнім Нұсқалар
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 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)

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

Возвращает индекс с отсчетом от нуля первого вхождения указанной строки в текущем объекте String. Параметры задают начальную позицию поиска в текущей строке и тип поиска.

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

Параметры

value
String

Строка для поиска.

startIndex
Int32

Позиция, с которой начинается поиск.

comparisonType
StringComparison

Одно из значений перечисления, определяющее правила поиска.

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

Отсчитываемая от нуля позиция параметра value с начала текущего экземпляра, если строка найдена, или -1, если нет. Если значение параметра value равно Empty, возвращаемым значением является startIndex.

Исключения

value имеет значение null.

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

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

Примеры

В следующем примере показаны три перегрузки IndexOf метода , которые находят первое вхождение строки в другой строке с помощью различных значений StringComparison перечисления .

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

*/

Комментарии

Нумерация индекса начинается с 0. Параметр startIndex может иметь значение в диапазоне от 0 до длины экземпляра строки. Если startIndex значение равно длине экземпляра строки, метод возвращает значение -1.

Параметр comparisonType указывает на value поиск параметра с использованием текущего или инвариантного языка и региональных параметров, поиска с учетом регистра или без учета регистра, а также правил сравнения слов или порядковых номеров.

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

Наборы символов содержат игнорируемые символы, то есть символы, которые не учитываются при выполнении лингвистического сравнения или сравнения с учетом языка и региональных параметров. Если при поиске с учетом языка и региональных параметров (то есть, если параметр comparisonType не имеет значение Ordinal или OrdinalIgnoreCase) параметр value содержит игнорируемый символ, результат аналогичен поиску с удаленным этим символом. Если value состоит только из одного или нескольких игнорируемых символов, IndexOf(String, Int32, StringComparison) метод всегда возвращает startIndexзначение , которое является позицией символа, с которой начинается поиск.

В следующем примере метод используется для поиска позиции мягкого дефиса (U+00AD), за которым следует буква "m", IndexOf(String, Int32, StringComparison) начиная с третьей позиции символа в двух строках. Только одна из строк содержит требуемую подстроку. Если пример выполняется на платформа .NET Framework 4 или более поздней версии, в обоих случаях, так как мягкий дефис является игнорируемым символом, метод возвращает индекс "m" в строке при сравнении с учетом языка и региональных параметров. Обратите внимание, что в случае первой строки, содержащей мягкий перенос перед буквой "m", этот метод возвращает не индекс мягкого переноса, а индекс буквы "m". Этот метод возвращает индекс мягкого переноса в первой строке только при выполнении порядкового сравнения.

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
    }
}

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

.NET 9 және басқа нұсқалар
Өнім Нұсқалар
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 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)

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

Возвращает индекс с отсчетом от нуля первого вхождения указанного символа Юникода в данной строке. Параметр определяет тип поиска заданного символа.

public int IndexOf (char value, StringComparison comparisonType);

Параметры

value
Char

Символ для поиска.

comparisonType
StringComparison

Значение перечисления, определяющее правила поиска.

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

Отсчитываемое от нуля значение индекса параметра value, если этот знак найден; в противном случае — значение –1.

Исключения

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

Комментарии

Нумерация индекса начинается с нуля.

Параметр comparisonType является элементом StringComparison перечисления, который указывает, используется ли при поиске value аргумента текущий или инвариантный язык и региональные параметры, учитывается регистр или не учитывается регистр, а также используются правила сравнения слов или порядковых номеров.

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

.NET 9 және басқа нұсқалар
Өнім Нұсқалар
.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)

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

Возвращает индекс с отсчетом от нуля первого вхождения указанного символа Юникода в данной строке. Поиск начинается с указанной позиции знака.

public int IndexOf (char value, int startIndex);

Параметры

value
Char

Искомый знак Юникода.

startIndex
Int32

Позиция, с которой начинается поиск.

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

Отсчитываемая от нуля позиция индекса параметра value с начала строки, если символ найден. Значение –1, если символ не найден.

Исключения

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

Примеры

В следующем примере демонстрируется IndexOf метод.

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

*/

Комментарии

Нумерация индекса начинается с 0. Параметр startIndex может иметь значение в диапазоне от 0 до длины экземпляра строки. Если startIndex значение равно длине экземпляра строки, метод возвращает значение -1.

Поиск будет находиться в диапазоне от startIndex до конца строки.

Этот метод выполняет порядковый поиск (без учета языка и региональных параметров), при котором символ считается эквивалентным другому символу только в том случае, если скалярные значения Юникода совпадают. Чтобы выполнить поиск с учетом языка и региональных параметров, используйте CompareInfo.IndexOf метод , в котором скалярное значение Юникода, представляющее предварительно скомпилированные символы, например лигатуру "Æ" (U+00C6), может считаться эквивалентным любому вхождениям компонентов символа в правильной последовательности, например "AE" (U+0041, U+0045), в зависимости от языка и региональных параметров.

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

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

.NET 9 және басқа нұсқалар
Өнім Нұсқалар
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

IndexOf(String)

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

Возвращает индекс с отсчетом от нуля первого вхождения значения указанной строки в данном экземпляре.

public int IndexOf (string value);

Параметры

value
String

Строка для поиска.

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

Положение в индексе (начиная с нуля) параметра value, если эта строка найдена, или значение -1, если она не найдена. Если значение value равно Empty, то возвращаемое значение равно 0.

Исключения

value имеет значение null.

Примеры

В следующем примере выполняется поиск "n" в "animal". Поскольку строковые индексы начинаются с нуля, а не от единицы, IndexOf(String) метод указывает, что "n" находится в позиции 1.

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

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

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.

Комментарии

Нумерация индекса начинается с нуля.

Этот метод выполняет поиск слов (с учетом регистра и языка и региональных параметров) с использованием текущего языка и региональных параметров. Поиск начинается с первой позиции символа данного экземпляра и продолжается до последней позиции символа.

Наборы символов содержат игнорируемые символы, то есть символы, которые не учитываются при выполнении лингвистического сравнения или сравнения с учетом языка и региональных параметров. Если при поиске с учетом языка и региональных параметров параметр value содержит игнорируемый символ, результат аналогичен поиску с удаленным этим символом. Если value состоит только из одного или нескольких игнорируемых символов, IndexOf(String) метод всегда возвращает значение 0 (ноль), чтобы указать, что совпадение найдено в начале текущего экземпляра. В следующем примере IndexOf(String) метод используется для поиска трех подстрок (мягкий дефис (U+00AD), мягкий дефис, за которым следует "n", и мягкий дефис, за которым следует "m") в двух строках. Только одна из строк содержит мягкий перенос. Если пример выполняется на платформа .NET Framework 4 или более поздней версии, в каждом случае, так как мягкий дефис является игнорируемым символом, результат будет таким же, как если бы мягкий дефис не был включен в value. При поиске только мягкого дефиса метод возвращает значение 0 (ноль), чтобы указать, что найдено совпадение в начале строки.

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
    }
}

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

Как описано в статье Рекомендации по использованию строк, рекомендуется избегать вызова методов сравнения строк, которые заменяют значения по умолчанию, и вместо этого вызывать методы, требующие явного указания параметров. Чтобы найти первый индекс подстроки в строковом экземпляре с помощью правил сравнения текущего языка и региональных параметров, явно сообщите о своем намерении, вызвав перегрузку IndexOf(String, StringComparison) метода со значением CurrentCulture для параметра comparisonType . Если вам не требуется лингвистическое сравнение, рассмотрите возможность использования Ordinal.

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

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

.NET 9 және басқа нұсқалар
Өнім Нұсқалар
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

IndexOf(Char)

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

Возвращает индекс с отсчетом от нуля первого вхождения указанного символа Юникода в данной строке.

public int IndexOf (char value);

Параметры

value
Char

Искомый знак Юникода.

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

Отсчитываемое от нуля значение индекса параметра value, если этот знак найден; в противном случае — значение -1.

Примеры

В следующем примере показано, как выполнить поиск String символа с помощью IndexOf метода .

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

Комментарии

Нумерация индекса начинается с нуля.

Этот метод выполняет порядковый поиск (без учета языка и региональных параметров), при котором символ считается эквивалентным другому символу только в том случае, если скалярные значения Юникода совпадают. Чтобы выполнить поиск с учетом языка и региональных параметров, используйте CompareInfo.IndexOf метод , в котором скалярное значение Юникода, представляющее предварительно скомпилированные символы, например лигатуру "Æ" (U+00C6), может считаться эквивалентным любому вхождениям компонентов символа в правильной последовательности, например "AE" (U+0041, U+0045), в зависимости от языка и региональных параметров.

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

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

.NET 9 және басқа нұсқалар
Өнім Нұсқалар
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

IndexOf(String, Int32)

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

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

public int IndexOf (string value, int startIndex);

Параметры

value
String

Строка для поиска.

startIndex
Int32

Позиция, с которой начинается поиск.

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

Отсчитываемая от нуля позиция индекса параметра value с начала текущего экземпляра, если строка найдена. Значение –1, если строка не найдена. Если значение параметра value равно Empty, возвращаемым значением является startIndex.

Исключения

value имеет значение null.

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

Примеры

В следующем примере выполняется поиск всех вхождений указанной строки в целевой строке.

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 );
    }
}

Комментарии

Нумерация индекса начинается с 0. Параметр startIndex может иметь значение в диапазоне от 0 до длины экземпляра строки. Если startIndex значение равно длине экземпляра строки, метод возвращает значение -1.

Этот метод выполняет поиск слов (с учетом регистра и языка и региональных параметров) с использованием текущего языка и региональных параметров. Поиск начинается с позиции символа startIndex данного экземпляра и продолжается до последней позиции символа.

Наборы символов содержат игнорируемые символы, то есть символы, которые не учитываются при выполнении лингвистического сравнения или сравнения с учетом языка и региональных параметров. Если при поиске с учетом языка и региональных параметров параметр value содержит игнорируемый символ, результат аналогичен поиску с удаленным этим символом. Если value состоит только из одного или нескольких игнорируемых символов, IndexOf(String, Int32) метод всегда возвращает startIndexзначение , которое является позицией символа, с которой начинается поиск. В следующем примере IndexOf(String, Int32) метод используется для поиска позиции мягкого дефиса (U+00AD), за которым следует "m" в двух строках. Только одна из строк содержит требуемую подстроку. Если пример выполняется на платформа .NET Framework 4 или более поздней версии, в обоих случаях, так как мягкий дефис является игнорируемым символом, метод возвращает индекс "m" в строке. Обратите внимание, что в случае первой строки, содержащей мягкий перенос перед буквой "m", этот метод возвращает не индекс мягкого переноса, а индекс буквы "m".

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
    }
}

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

Как описано в статье Рекомендации по использованию строк, рекомендуется избегать вызова методов сравнения строк, которые заменяют значения по умолчанию, и вместо этого вызывать методы, требующие явного указания параметров. Чтобы найти первый индекс подстроки, которая возникает после определенной позиции символа, используя правила сравнения текущего языка и региональных параметров, явно сообщите о своем намерении, вызвав перегрузку IndexOf(String, Int32, StringComparison) метода со значением CurrentCulture для параметра comparisonType . Если вам не требуется лингвистическое сравнение, рассмотрите возможность использования Ordinal.

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

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

.NET 9 және басқа нұсқалар
Өнім Нұсқалар
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0