Экспорт (0) Печать
Развернуть все
Данная статья переведена автоматически. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. Дополнительные сведения.
Перевод
Текст оригинала

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

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

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

public int IndexOf(
	string value,
	int startIndex
)

Параметры

value
Тип: System.String
Строка для поиска.
startIndex
Тип: System.Int32
Позиция, с которой начинается поиск.

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

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

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

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

ArgumentOutOfRangeException

параметр startIndex меньше 0 (нуля) или больше длины этой строки.

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

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

Наборы символов содержат игнорируемые символы, то есть символы, которые не учитываются при выполнении лингвистического сравнения или сравнения с учетом языка и региональных параметров. Если при поиске с учетом языка и региональных параметров параметр value содержит игнорируемый символ, результат аналогичен поиску с удаленным этим символом. Если value состоит только из одного или нескольких ignorable символов, метод IndexOf(String, Int32) всегда возвращает startIndex, положение символа, с которой начинается поиск. В следующем примере метод IndexOf(String, Int32) используется для поиска позиция мягкого дефиса (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));
      Console.WriteLine(s2.IndexOf(searchString, 2));
   }
}
// The example displays the following output:
//       4
//       3


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

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

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


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


.NET Framework

Поддерживается в версиях: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.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.

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

ДОБАВИТЬ
Корпорация Майкрософт проводит интернет-опрос, чтобы выяснить ваше мнение о веб-сайте MSDN. Если вы желаете принять участие в этом интернет-опросе, он будет отображен при закрытии веб-сайта MSDN.

Вы хотите принять участие?
Показ:
© 2014 Microsoft