此主题尚未评级 - 评价此主题

String.IndexOf 方法 (String, Int32, Int32, StringComparison)

2013/12/13

报告指定的字符串在当前 String 对象中的第一个匹配项的从零开始的索引。参数指定当前字符串中的起始搜索位置、要搜索的当前字符串中的字符数量,以及要用于指定字符串的搜索类型。

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)
public int IndexOf(
	string value,
	int startIndex,
	int count,
	StringComparison comparisonType
)

参数

value
类型: System.String
要搜寻的字符串。
startIndex
类型: System.Int32
搜索起始位置。
count
类型: System.Int32
要检查的字符位置数。
comparisonType
类型: System.StringComparison
指定搜索规则的枚举值之一。

返回值

类型: System.Int32
如果找到该字符串,则为 value 参数的从零开始的索引位置;如果未找到该字符串,则为 -1。如果 valueEmpty,则返回值为 startIndex
异常条件
ArgumentNullException

valuenull

ArgumentOutOfRangeException

countstartIndex 为负。

- 或 -

startIndex 大于此实例的长度。

- 或 -

count 大于此字符串的长度减 startIndex

ArgumentException

comparisonType 不是有效的 System.StringComparison 值。

索引编号从零开始。startIndex 的范围可以从 0 到字符串实例的长度。

搜索从 startIndex 开始,并且一直搜索至 startIndex + count -1。startIndex + count 位置上的字符不在搜索范围内。

comparisonType 参数指定使用当前区域性还是固定区域性、使用区分大小写的搜索还是不区分大小写的搜索、以及使用字比较规则还是序号比较规则来搜索 value 参数。

下面的代码示例演示 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

*/


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈
显示:
© 2014 Microsoft. 版权所有。