导出 (0) 打印
全部展开
此文章由机器翻译。 将光标移到文章的句子上,以查看原文。 更多信息。
译文
原文

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

报告指定字符串在此实例中的第一个匹配项的从零开始的索引。 搜索从指定字符位置开始,并检查指定数量的字符位置。

命名空间:  System
程序集:  mscorlib(在 mscorlib.dll 中)

public int IndexOf(
	string value,
	int startIndex,
	int count
)

参数

value
类型:System.String
要搜寻的字符串。
startIndex
类型:System.Int32
搜索起始位置。
count
类型:System.Int32
要检查的字符位置数。

返回值

类型:System.Int32
如果找到该字符串,则为 value 的从零开始的索引位置;如果未找到该字符串,则为 -1。 如果 valueString.Empty,则返回值为 startIndex

异常条件
ArgumentNullException

valuenull

ArgumentOutOfRangeException

countstartIndex 为负。

- 或 -

startIndex 大于此字符串的长度。

- 或 -

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

索引编号从0(零)开始。 startIndex 参数可以介于 0 到字符串实例的长度。

此方法使用当前区域性执行单词(区分大小写和区域性)搜索。 搜索从 startIndex 开始,并且一直搜索至 startIndex + count -1。 startIndex + count 位置上的字符不在搜索范围内。

字符集包括可忽略字符,在执行语言性的或区分区域性的比较时该字符不被考虑。 在区分区域性的搜索中,如果 value 包含一个可忽略字符,则结果与移除了该字符的搜索等效。 如果 value 仅包含一个或多个可忽略字符,IndexOf(String, Int32, Int32) 方法始终返回 startIndex,字符开始搜索的位置。 在下面的示例中,IndexOf(String, Int32, Int32) 方法用于在两个字符串的第三到第六个字符中查找后跟"m"虚拟连字符(U+00AD)。 只有一个字符串包含必需的子字符串。 如果示例在 .NET Framework 4 或更高版本上运行,在这两种情况下,因为指针,连字符是一 ignorable,该方法返回字符“m”Index 在字符串,则执行区分区域性的比较时。 注意对于第一个字符串,包含软连字符后跟“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, 4));
      Console.WriteLine(s2.IndexOf(searchString, 2, 4));
   }
}
// The example displays the following output:
//       4
//       3


对调用者的说明

在 .NET Framework 中使用字符串的最佳做法 中所述,我们建议您避免调用替换默认值的字符串比较方法,而是调用需要显式指定参数的方法。 若要使用当前区域性的比较规则执行此操作,请为它的 comparisonType 参数使用 StringComparison.CurrentCulture 的值来调用 IndexOf(String, Int32, Int32, StringComparison) 方法重载。

下面的示例查找字符串“he”在另一个字符串的子字符串中的所有匹配项的索引。 注意,对于每次搜索迭代,必须重新计算待搜索字符的个数。


// Sample for String.IndexOf(String, Int32, Int32)
using System;

class Sample {
    public static void Main() {

    string br1 = "0----+----1----+----2----+----3----+----4----+----5----+----6----+-";
    string br2 = "0123456789012345678901234567890123456789012345678901234567890123456";
    string str = "Now is the time for all good men to come to the aid of their party.";
    int start;
    int at;
    int end;
    int count;

    end = str.Length;
    start = end/2;
    Console.WriteLine();
    Console.WriteLine("All occurrences of 'he' from position {0} to {1}.", start, end-1);
    Console.WriteLine("{1}{0}{2}{0}{3}{0}", Environment.NewLine, br1, br2, str);
    Console.Write("The string 'he' occurs at position(s): ");

    count = 0;
    at = 0;
    while((start <= end) && (at > -1))
        {
// start+count must be a position within -str-.
        count = end - start;
        at = str.IndexOf("he", start, count);
        if (at == -1) break;
        Console.Write("{0} ", at);
        start = at+1;
        }
    Console.WriteLine();
    }
}
/*
This example produces the following results:

All occurrences of 'he' from position 33 to 66.
0----+----1----+----2----+----3----+----4----+----5----+----6----+-
0123456789012345678901234567890123456789012345678901234567890123456
Now is the time for all good men to come to the aid of their party.

The string 'he' occurs at position(s): 45 56

*/


.NET Framework

受以下版本支持:4.5.2、4.5.1、4.5、4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

可移植类库

受以下版本支持:可移植类库

适用于 Windows 应用商店应用的 .NET

受以下版本支持:Windows 8

适用于 Windows Phone 应用的 .NET

受以下版本支持:Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(不支持服务器核心角色), Windows Server 2008 R2(支持带 SP1 或更高版本的服务器核心角色;不支持 Itanium)

.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参阅.NET Framework 系统要求

社区附加资源

添加
显示:
© 2014 Microsoft