📜  C#| IndexOfAny()方法

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

在C#中, IndexOfAny()方法是一个String方法。它用于搜索字符串中存在的指定字符索引,该字符索引将从起始索引开始第一个出现。它以整数形式返回索引。可以通过更改传递给它的参数数量来重载此方法。

  • IndexOfAny方法(Char [])
  • IndexOfAny方法(Char [],Int32)
  • IndexOfAny方法(Char [],Int32,Int32)

IndexOfAny方法(Char [])

这种方法将需要一个单一的参数是含有一个或多个字符来搜索字符数组。它将从起始索引开始搜索,即默认从0开始,如果在ch中没有找到字符,则返回-1。

句法:

public int IndexOfAny(char[] ch)
  • 参数:该方法将类型System.Char []其为含有一个或多个字符要搜索的字符阵列的单个参数。
  • 返回值:此方法将始终返回在当前实例中找到ch的任何字符的第一个匹配项。它使用了从零开始的索引位置。此方法的返回类型为System.Int32
  • 异常:如果ch为null,则此方法可以给出ArgumentNullException异常。

示例:演示公共int IndexOfAny(char [] ch)方法的程序。 IndexOfAny方法将从字符串的开头到结尾搜索字符,并返回整数值作为位置,该位置是该字符的首次出现。

// C# program to illustrate the
// public int IndexOfAny(char[] ch)
using System;
class GFG {
  
   // Main Method
    public static void Main()
    {
        String str = "GeeksForGeeks";
        Console.WriteLine("Given String : {0}\n", str);
  
        // to find single character
        // to start search to match character
        // 's' will be found at 5 position
        char[] ch = { 's' }; 
        Console.WriteLine(str.IndexOfAny(ch) + 1);
  
        // to find any character
        // to start search to match characters
        char[] ch1 = { 'a', 'b', 'c', 'e', 'f' }; 
  
        // 'a', 'b', 'c', 'e', 'f' then first
        // 'e' will be found at 2 position
        Console.WriteLine(str.IndexOfAny(ch1) + 1);
  
        char[] ch2 = { 'a', 'b', 'c' };
  
        // if no character found in string
        // then return -1;
        int m = str.IndexOfAny(ch2);
        if (m > -1)
            Console.Write(m);
        else
            Console.WriteLine("Not Found");
    }
}

输出:

Given String : GeeksForGeeks

5
2
Not Found

IndexOfAny方法(Char [],Int32)

此方法使用指定字符数组中任何字符的当前实例中第一个匹配项的从零开始的索引。搜索从指定的字符位置开始。

句法:

public int IndexOfAny(char[] ch, int startIndex)
  • 参数:此方法采用两个参数,即System.Char []类型的char [] ch (用于指定要搜索的字符数组)和System.Int32类型的startIndex (用于指定要从其中搜索字符串的起始索引)。
  • 返回值:此方法将始终返回在当前实例中找到ch的任何字符的第一个匹配项。它使用了从零开始的索引位置。此方法的返回类型为System.Int32
  • 例外:这种方法会给两个例外,即如果ArgumentNullException CH为空,如果ArgumentOutOfRangeExceptionstartIndex大于要搜索的字符串或要么是负的

示例:演示公共int IndexOfAny(char [] ch,int startIndex)方法的程序。 IndexOfAny方法将从字符的开头到指定的startIndex到字符串的末尾搜索字符,并返回整数值作为位置,该位置是该字符的首次出现。

// C# program to illustrate the
// public int IndexOfAny(char[] ch, int startIndex)
using System;
class GFG {
  
    // Main Method
    public static void Main()
    {
  
        String str = "GeeksForGeeks";
        Console.WriteLine("Given String : {0}\n", str);
  
        // to find single character
        char[] ch = { 's' }; 
        int startIndex = 6;
  
        // to start search from index 6 so character
        // 's' will be found at 13 position
        Console.WriteLine(str.IndexOfAny(ch, startIndex) + 1);
  
        // to find any character
        char[] ch1 = {'a', 'b', 'c', 'e', 'f'}; 
        int startIndex1 = 4;
  
        // to start search from index 4 so character
        // 'e' will be match first at 10 position
        Console.WriteLine(str.IndexOfAny(ch1, startIndex1) + 1);
  
        char[] ch2 = { 'a', 'b', 'c', 'f' };
        int startIndex2 = 5;
  
        // to start search from index 5
        // so no character found
        // its case sensitive search so 'f' is not match
        int m = str.IndexOfAny(ch2, startIndex2);
        if (m > -1)
            Console.Write(m);
        else
            Console.Write("Not Found");
    }
}

输出:

Given String : GeeksForGeeks

13
10
Not Found

public int IndexOfAny(char [] ch,int startIndex,int count)

此方法使用指定字符数组中任何字符的当前实例中第一个匹配项的从零开始的索引。搜索从指定的字符位置开始,并检查指定数量的字符位置。

句法:

public int IndexOfAny(char[] ch, int startIndex, int count)
  • 参数:此方法采用三个参数,即System.Char []类型的char [] ch (用于指定要搜索的字符数组), System.Int32类型的startIndex (用于指定要从其中搜索字符串的起始索引以及计数)类型System.Int32指定要检查的字符位置数。
  • 返回值:此方法将始终返回在当前实例中找到ch的任何字符的第一个匹配项。它使用了从零开始的索引位置。此方法的返回类型为System.Int32
  • 例外:这种方法会给两个例外,即如果ArgumentNullException CH为空,如果ArgumentOutOfRangeExceptionstartIndex +计数大于被搜索的字符串或者两个都(startIndex和计数)为

示例:演示公共int IndexOfAny(char [] ch,int startIndex,int count)方法的程序。此IndexOfAny方法将从指定索引查询的字符来指定索引+(计数- 1)其中计数是字符数来检查,然后整数值返回作为是该字符的第一次出现的位置的字符串。

// C# program to illustrate the
// public int IndexOfAny( char[] ch, 
// int startIndex, int count)
using System;
class GFG {
  
    // Main Method
    public static void Main()
    {
  
        String str = "GeeksForGeeks";
        Console.WriteLine("Given String : {0}\n", str);
  
        // to find single character
        char[] ch = { 's' }; 
        int startIndex = 6;
        int count = 4;
  
        // to start search from index 6 
        // to 10(6+4)so character
        // 's' is not found so return -1
        int r = str.IndexOfAny(ch, startIndex, count) == -1
                ? -1 : str.IndexOfAny(ch, startIndex, count) + 1;
        Console.WriteLine(r);
  
        // to find any character
        char[] ch1 = {'a', 'b', 'c', 'e', 'f'}; 
        int startIndex1 = 3;
        int count1 = 8;
  
        // to start search from index 3 
        // to 11(3 + 8)so character
        // 's' will be match first at 10 position
        int r1 = str.IndexOfAny(ch1, startIndex1, count1) == -1
                     ? -1 : str.IndexOfAny(ch1, startIndex1, count1) + 1;
        Console.WriteLine(r1);
  
        char[] ch2 = {'a', 'b', 'c', 'F'};
        int startIndex2 = 5;
        int count2 = 5;
  
        // to start search from index 5 
        // to 10(5 + 5)so character
        // 'F' will be match first at 6 position
        int r2 = str.IndexOfAny(ch2, startIndex2, count2) == -1
                     ? -1 : str.IndexOfAny(ch2, startIndex2, count2) + 1;
        Console.WriteLine(r2);
    }
}

输出:

Given String : GeeksForGeeks

-1
10
6

要记住的要点:

  • 搜索字符数组元素区分大小写。
  • 搜索范围从startIndex到字符串。
  • 如果字符数组元素是一个空数组,则该方法在字符串的开头找到一个匹配项。

参考:

  • https://msdn.microsoft.com/zh-CN/library/system。字符串.indexofany1
  • https://msdn.microsoft.com/zh-CN/library/system。字符串.indexofany2
  • https://msdn.microsoft.com/zh-CN/library/system。字符串.indexofany3