String.IndexOf Method (String, StringComparison)
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
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.
Assembly: mscorlib (in mscorlib.dll)
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.Int32The 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.
| Exception | Condition |
|---|---|
| ArgumentNullException | value is null. |
| ArgumentException | comparisonType is not a valid System.StringComparison value. |
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 */