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# Char Test (If Char in String Equals a Value)

Benchmark a fast way to test char values. See if a char in a string equals a value.
Char test. Consider a string. We can test it with complex methods with StartsWith or EndsWith. But if we test chars directly, this can be faster.StringsStartsWith, EndsWithChar
Specialized logic. We can also arrange if-tests with chars to avoid repeated work—for example, if we want to test multiple strings starting with a letter, we can test that value once.If
A simple example. Here is a simple example of testing the first letter in a string. Here we see if the string equals the lowercase letter "t."
C# program that uses char test using System; class Program { static void Main() { string value = "test"; // See if first char is the lowercase T. if (value[0] == 't') { Console.WriteLine("First char is t"); } } } Output First char is t
Some optimization. String comparisons can be optimized. We need to test a string thousands to billions of times. We benchmark an alternative way of comparing constant strings.Benchmark

Note: In many programs, there are strings that are immutable and will not change throughout the program.

And: I needed to know if the string matched one of two substrings. The code was critical.

Warning: From a high-level perspective, hard-coding multiple character compares is a poor design.

Code that uses EndsWith, A: C# static bool EndsThreeA(string s) { return s.EndsWith("three", StringComparison.Ordinal); } Code that uses char test, B: C# static bool EndsThreeB(string s) { int len = s.Length; if (len >= 5 && s[len - 5] == 't' && s[len - 4] == 'h' && s[len - 3] == 'r' && s[len - 2] == 'e' && s[len - 1] == 'e') { return true; } else { return false; } } Code that uses StartsWith, A: C# static bool StartsMsA(string s) { return s.StartsWith("http://microsoft.com", StringComparison.Ordinal) || s.StartsWith("http://msdn.microsoft.com", StringComparison.Ordinal); } Code that uses char test, B: C# static bool StartsMsB(string s) { int len = s.Length; if (len > 19 && s[0] == 'h' && s[1] == 't' && s[2] == 't' && s[3] == 'p' && s[4] == ':' && s[5] == '/' && s[6] == '/' && s[7] == 'm') { if (s[8] == 'i' && s[9] == 'c' && s[10] == 'r' && s[11] == 'o' && s[12] == 's' && s[13] == 'o' && s[14] == 'f' && s[15] == 't' && s[16] == '.' && s[17] == 'c' && s[18] == 'o' && s[19] == 'm') { return true; } if (len > 24 && s[8] == 's' && s[9] == 'd' && s[10] == 'n' && s[11] == '.' && s[12] == 'm' && s[13] == 'i' && s[14] == 'c' && s[15] == 'r' && s[16] == 'o' && s[17] == 's' && s[18] == 'o' && s[19] == 'f' && s[20] == 't' && s[21] == '.' && s[22] == 'c' && s[23] == 'o' && s[24] == 'm') { return true; } return false; } return false; }
Benchmark. The "A" methods use StartsWith and EndsWith, and the StringComparison.Ordinal option. The "B" methods individually test chars.

And: We see that the unwound loops, those that test chars individually, are much faster.

For
Benchmark results StartsWith and EndsWith methods: 2176 ms Char testing: 586 ms [faster]
Summary. We tested individual chars in C# strings. By testing chars separately, we also avoid redundant work. This would be an excellent use for a code-generation tool.
© 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