String.IndexOf Method (String, StringComparison)

July 28, 2014

Reports the zero-based index of the first occurrence of the specified string in the current String object. A parameter specifies the type of search to use for the specified string.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

public int IndexOf(
	string value,
	StringComparison comparisonType
)

Parameters

value
Type: System.String
The string to seek.
comparisonType
Type: System.StringComparison
One of the enumeration values that specifies the rules for the search.

Return Value

Type: System.Int32
The zero-based index position of the value parameter if that string is found, or -1 if it is not. If value is Empty, the return value is 0.

ExceptionCondition
ArgumentNullException

value is null.

ArgumentException

comparisonType is not a valid System.StringComparison value.

Index numbering starts from zero.

The comparisonType parameter specifies to search for the value parameter using the current or invariant culture, using a case-sensitive or case-insensitive search, and using word or ordinal comparison rules.

The following code example demonstrates three overloads of the IndexOf method that find the first occurrence of a string within another string using different values of the StringComparison enumeration.


// This code example demonstrates the 
// System.String.IndexOf(String, ..., StringComparison) methods.

using System;
using System.Threading;
using System.Globalization;

class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      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 };

      // Display an introduction.
      outputBlock.Text += intro + "\n";

      // 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");
      outputBlock.Text += String.Format("The current culture is \"{0}\" - {1}.",
                         Thread.CurrentThread.CurrentCulture.Name,
                         Thread.CurrentThread.CurrentCulture.DisplayName) + "\n";

      // Display the string to search for and the string to search.
      outputBlock.Text += String.Format("Search for the string \"{0}\" in the string \"{1}\"",
                         CapitalAWithRing, cat) + "\n";
      outputBlock.Text += "\n";

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

      outputBlock.Text += "Part 1: Start index and count are specified." + "\n";
      foreach (StringComparison sc in scValues)
      {
         loc = cat.IndexOf(CapitalAWithRing, 0, cat.Length, sc);
         outputBlock.Text += String.Format(resultFmt, sc, loc) + "\n";
      }

      // Search using different values of StringComparison. Specify the 
      // start index. 
      outputBlock.Text += "\nPart 2: Start index is specified." + "\n";
      foreach (StringComparison sc in scValues)
      {
         loc = cat.IndexOf(CapitalAWithRing, 0, sc);
         outputBlock.Text += String.Format(resultFmt, sc, loc) + "\n";
      }

      // Search using different values of StringComparison. 
      outputBlock.Text += "\nPart 3: Neither start index nor count is specified." + "\n";
      foreach (StringComparison sc in scValues)
      {
         loc = cat.IndexOf(CapitalAWithRing, sc);
         outputBlock.Text += String.Format(resultFmt, sc, loc) + "\n";
      }
   }
}

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

Supported in: 8.1, 8.0, 7.1, 7.0

Windows Phone

Show:
© 2014 Microsoft