📜  C#| String.IndexOf()方法|套装– 1

📅  最后修改于: 2021-05-29 20:13:47             🧑  作者: Mango

在C#中, IndexOf()方法是一个字符串方法。此方法用于查找的字符串的当前实例中的指定字符或字符串的第一次出现的零的索引。如果找不到字符或字符串,则该方法返回-1。可以通过向其传递不同的参数来重载此方法。

  • String.IndexOf(char x)
  • String.IndexOf(char x,int start1)
  • String.IndexOf(char x,int start1,int start2)
  • String.IndexOf(字符串s1)
  • String.IndexOf(字符串s1,int start1)
  • String.IndexOf(字符串s1,int start1,int start2)
  • String.IndexOf(字符串s1,int start1,int start2,StringComparison cType)
  • String.IndexOf(字符串s1,int start1,StringComparison cType)
  • String.IndexOf(字符串s1,StringComparison cType)

String.IndexOf(char x)方法

此方法返回字符串指定字符首次出现的从零开始的索引。如果找不到这样的字符,则返回-1。

句法:

public int IndexOf(char x)
  • 参数:此方法采用System.Char类型的参数char x ,该参数指定了要搜索的字符。
  • 返回类型:此方法的返回类型为System.Int32

示例:在下面的代码中,用户希望知道指定字符串“ GeeksForGeeks”中字符“ F”的索引,因此,该方法主要返回字符“ F”的首次出现所对应的结果。同样在第二种情况下,字符’C’不存在,因此它仅返回-1。

// C# program to illustrate the 
// String.IndexOf(char x) method
using System;
namespace ConsoleApplication1 {
  
class Geeks {
  
    // Main Method
    static void Main(string[] args)
    {
  
        string str = "GeeksForGeeks";
  
        // Finding the index of character 
        // which is present in string and
        // this will show the value 5
        int index1 = str.IndexOf('F');
          
        Console.WriteLine("The Index Value of character 'F' is " + index1);
  
        // Now finding the index of that character which
        //  is not even present with the string
        int index2 = str.IndexOf('C');
  
        // As expected, this will output value -1
        Console.WriteLine("The Index Value of character 'C' is " + index2);
    }
}
}

输出:

The Index Value of character 'F' is 5
The Index Value of character 'C' is -1

String.IndexOf(char x,int start1)方法

此方法返回字符串指定字符首次出现的从零开始的索引。但是,将从指定位置开始搜索该字符,如果找不到,则返回-1。

句法:

public int IndexOf(char x, int start1)
  • 参数:此方法采用两个参数,即System.Char类型的char x (指定要搜索的字符)和System.Int32类型的start1 (以整数值形式指定要从其开始搜索的位置)。
  • 返回类型:此方法的返回类型为System.Int32
  • 异常:如果start1小于0(零)或大于字符串的长度,则此方法可以提供ArgumentOutOfRangeException

实施例:在下面的代码用户想要指定的字符串内知道字符“H”的索引“HelloGeeks”并且作为结果,此方法返回字符的各索引的“H”。但是,如果start1大于1,则很明显返回-1。

// C# program to illustrate the 
// String.IndexOf(char x, int start1) method
using System;
namespace ConsoleApplication2{
  
class Geeks {
  
    // Main Method
    static void Main(string[] args)
    {
  
        string str = "HelloGeeks";
  
        // Finding the index of character
        // which is present in string
        // this will show the value 0
        int index1 = str.IndexOf('H', 0);
    
  
        Console.WriteLine("The Index Value of character 'H' "+
                          "with start index 0 is " + index1);
  
        // Now finding the index of character 
        // 'H' with starting position greater
        // than index position of 'H'
        int index2 = str.IndexOf('H', 5);
  
        // As expected, this will output value -1
        Console.WriteLine("The Index Value of character 'H' is " + index2);
    }
}
}

输出:

The Index Value of character 'H' with start index 0 is 0
The Index Value of character 'H' is -1

String.IndexOf(char x,int start1,int start2)方法

此方法返回字符串指定字符首次出现的从零开始的索引。但是,将从指定位置start1开始搜索该字符,直到指定位置(即start2)为止,如果找不到该字符,则返回-1。

句法:

public int IndexOf(char x, int start1, int start2)
  • 参数:此方法采用三个参数,即System.Char类型的char x (指定要搜索的字符) , System.Int32类型的start1 (以整数值形式指定要从其开始搜索的起始位置和start2的参数) 。类型System.Int32 ,它指定要停止搜索的结束位置。
  • 返回类型:此方法的返回类型为System.Int32
  • 异常:如果start1或start2为负,或者start1大于当前字符串的长度,或者start2大于当前字符串的长度减去start1,则此方法可以提供ArgumentOutOfRangeException

实施例:在下面的代码的用户想要知道字符“R”的指定字符串“我的生活我的规则”,并作为结果,该方法返回字符“R”的索引值中的索引。再次针对start1> 1和start2 <8的情况,由于未找到任何字符,它再次返回-1。

// C# program to illustrate the
// String.IndexOf(char x, int start1,
//  int start2) method
using System;
namespace ConsoleApplication3 {
  
class Geeks {
  
    // Main Method
    static void Main(string[] args)
    {
  
        string str = "My Life My Rules";
  
        int index1 = str.IndexOf('R', 2, 14);
  
        // Here starting index is < Index value of 'R'
        // Also ending index is > Index of 'R'
        // Hence It is obvious to return 11
        Console.WriteLine("Index Value of 'R' with start"+ 
                          " Index =2 and end Index = 15 is " + index1);
  
        // Now here starting index is chosen right
        // However ending position is < index of 'R'
        // Surely it will return -1
        int index2 = str.IndexOf('R', 1, 8);
  
        Console.WriteLine("Index Value of 'R' with start"+
                          " Index = 1 and end Index = 8 is " + index2);
    }
}
}

输出:

Index Value of 'R' with start Index =2 and end Index = 15 is 11
Index Value of 'R' with start Index = 1 and end Index = 8 is -1

String.IndexOf(字符串 s1)方法

此方法返回字符串内的指定的子串的第一个匹配的基于零的索引。如果找不到这样的字符串,则它返回-1,与使用字符的情况相同。

句法:

public int IndexOf(string s1)
  • 参数:该方法采用类型为System.String的参数s1 ,该参数指定要搜索的子字符串。
  • 返回类型:此方法的返回类型为System.Int32 。如果找到该字符串,则为s1的从零开始的索引位置,否则为-1。如果s1为String.Empty,则返回值为0。
  • 异常:如果s1为null,则此方法可以提供ArgumentNullException

示例:在下面的代码中,已知字符串’How’存在于主字符串,因此它将仅返回其第一个字符的索引值。但是,在下一种情况下,没有名称为“ Chair”的子字符串,因此,它仅返回-1。

// C# program to illustrate the
// String.IndexOf(string  s1) method
using System;
namespace ConsoleApplication4 {
  
class Geeks {
  
    // Main Method
    static void Main(string[] args)
    {
  
        string str = "Hello Friends....How are you...";
  
        int i = str.IndexOf("How");
  
        // As this string is present in the 
        // main string then it will obviously
        //  output the value as 17
        Console.WriteLine("First value Index of 'How' is " + i);
  
        // now the following string is not present
        // So as per the rules, it will return -1
        int i1 = str.IndexOf("Chair");
  
        // As this string is present in 
        // the main string then it will 
        // obviously output the value as -1
        Console.WriteLine("First value Index of 'Chair' is " + i1);
    }
}
}

输出:

First value Index of 'How' is 17
First value Index of 'Chair' is -1