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

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

 

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

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

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

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

Параметры

value
Type: System.String

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

startIndex
Type: System.Int32

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

comparisonType
Type: System.StringComparison

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

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

Type: System.Int32

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

Exception Condition
ArgumentNullException

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

ArgumentOutOfRangeException

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

ArgumentException

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

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

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

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

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

В следующем примере IndexOf(String, Int32, StringComparison) метод используется для нахождения положение мягкий перенос (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, 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

Exampledemonstrates следующие три перегрузки 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

*/

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