String.IndexOf 方法 (String, StringComparison)
2013/3/11
报告指定的字符串在当前 String 对象中的第一个匹配项的从零开始的索引。一个参数指定要用于指定字符串的搜索类型。
程序集: mscorlib(位于 mscorlib.dll 中)
| 异常 | 条件 |
|---|---|
| ArgumentNullException | value 为 null。 |
| ArgumentException | comparisonType 不是有效的 System.StringComparison 值。 |
下面的代码示例演示 IndexOf 方法的三个重载,该方法使用 StringComparison 枚举的不同值在另一个字符串内查找某个字符串的第一个匹配项。
// 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 */