Информация
Запрошенная вами тема показана ниже. Однако эта тема не включена в библиотеку.

String.IndexOf - метод (String, Int32, Int32, StringComparison)

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

Пространство имен:  System
Сборка:  mscorlib (в mscorlib.dll)

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

Параметры

value
Тип: System.String
Строка для поиска.
startIndex
Тип: System.Int32
Позиция, с которой начинается поиск.
count
Тип: System.Int32
Количество позиций знаков для проверки.
comparisonType
Тип: System.StringComparison
Одно из значений перечисления, определяющее правила поиска.

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

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

ИсключениеУсловие
ArgumentNullException

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

ArgumentOutOfRangeException

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

– или –

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

– или –

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

ArgumentException

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

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

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

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

Примечания к вызывающим объектам

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

В следующем примере метод IndexOf(String, Int32, Int32, StringComparison) используется для поиска позиция мягкого дефиса (U+00AD) и «m», в третьих через шестых расположениях символа в 2 строк. Только одна из строк содержит требуемую подстроку. Если пример выполняется на .NET Framework 4 или более поздней версии, в обоих случаях, поскольку мягкий дефис ignorable символ, метод возвращает индекс «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


В следующем примере демонстрируются три перегруженные версии метода 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

*/


.NET Framework

Поддерживается в версиях: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework (клиентский профиль)

Поддерживается в версиях: 4, 3.5 с пакетом обновления 1 (SP1)

Переносимая библиотека классов

Поддерживается в версии: Переносимая библиотека классов

Приложения .NET для Магазина Windows

Поддерживается в версии: Windows 8

Приложения .NET для Windows Phone

Поддерживается в версиях: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows Server 2008 (роль основных серверных компонентов не поддерживается), Windows Server 2008 R2 (роль основных серверных компонентов поддерживается в пакете обновления 1 (SP1) или выше; системы на базе Itanium не поддерживаются)

.NET Framework поддерживает не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.

Добавления сообщества

Показ:
© 2014 Microsoft