Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Метод String.IndexOf (String, Int32)

 

Опубликовано: Октябрь 2016

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

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

public int IndexOf(
	string value,
	int startIndex
)

Параметры

value
Type: System.String

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

startIndex
Type: System.Int32

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

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

Type: System.Int32

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

Exception Condition
ArgumentNullException

Свойство value имеет значение null.

ArgumentOutOfRangeException

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

Индексация начинается с 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

Заметки к вызывающим объектам:

Как описано в Рекомендации по использованию строк в .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 );
    }
}

Универсальная платформа Windows
Доступно с 8
.NET Framework
Доступно с 1.1
Переносимая библиотека классов
Поддерживается в: переносимые платформы .NET
Silverlight
Доступно с 2.0
Windows Phone Silverlight
Доступно с 7.0
Windows Phone
Доступно с 8.1
Вернуться в начало
Показ: