TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

<< Back to C-SHARP

C# IndexOfAny Examples

Use the IndexOfAny method to search for any character within an array of characters.
IndexOfAny. This method searches a string for many values. It returns the first position of any of the values you provide (or -1).StringsIndexOf
Overloads, notes. The .NET Framework provides several overloads of IndexOfAny. This method is useful in certain contexts. Its performance is not great.
Some examples. IndexOfAny is an instance method that returns an integer value type indicating the position of the found character, or the special value -1 if no value was found.

And: The first argument is a character array, which you can declare directly in the parameter list or separately as a variable.

Tip: It is sometimes faster to store this char array separately and reuse it whenever calling IndexOfAny.

Char Array

First: The first call searches for a lowercase e or an uppercase B. It finds the lowercase e because it comes first in the string.

Next: The second method call has the same parameter value and it locates the uppercase B in its source string.

C# program that uses IndexOfAny method using System; class Program { static void Main() { // Input. const string value1 = "My cat eats fish."; const string value2 = "Visual Basic is hard."; // Find first location of 'e' or 'B'. int index1 = value1.IndexOfAny(new char[] { 'e', 'B' }); Console.WriteLine(value1.Substring(index1)); // Find first location of 'e' or 'B'. int index2 = value2.IndexOfAny(new char[] { 'e', 'B' }); Console.WriteLine(value2.Substring(index2)); } } Output eats fish. Basic is hard.
IndexOfAny benchmark. Consider now the performance of IndexOfAny. Can this method be used in performance-critical string methods? We test its performance.

Results: The IndexOfAny method seems to perform much worse than a for-loop with an if-statement. For a simple search, it is far slower.

ForIf

However: If an array of characters is needed, the IndexOfAny method's performance will likely be more competitive.

C# program that benchmarks IndexOfAny using System; using System.Diagnostics; class Program { const int _max = 1000000; static void Main() { string test = "abcdefg"; // Version 1: test IndexOfAny. var s1 = Stopwatch.StartNew(); for (int i = 0; i < _max; i++) { int result = test.IndexOfAny(new char[] { 'd', 'x', '?' }); if (result != 3) { return; } } s1.Stop(); // Version 2: test custom loop with if-statement. var s2 = Stopwatch.StartNew(); for (int i = 0; i < _max; i++) { int result = -1; for (int x = 0; x < test.Length; x++) { if (test[x] == 'd' || test[x] == 'x' || test[x] == '?') { result = x; break; } } if (result != 3) { return; } } s2.Stop(); Console.WriteLine(s1.Elapsed.TotalMilliseconds); Console.WriteLine(s2.Elapsed.TotalMilliseconds); } } Output 36.7644 ms IndexOfAny 6.175 ms For-loop
Notes, overloads. IndexOfAny has 3 overloads. You can provide the startIndex and the count parameter integer values. The arguments determine the method's behavior.Overload

Arguments: The 2 values indicate the position in the source string you want to begin searching, and then the number of characters to check.

Notes, forward-only. The IndexOfAny method always performs a forward-only (left to right) scan of the input string. You can use the LastIndexOfAny method for a reversed scan.LastIndexOfAny
Summary. IndexOfAny provides a way to scan an input string declaratively for the first occurrence of any of the characters in the parameter char array. IndexOfAny reduces loop nesting.
© TheDeveloperBlog.com
The Dev Codes

Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf