.NET Array Dictionary List String 2D Async DataTable Dates DateTime Enum File For Foreach Format IEnumerable If IndexOf Lambda Parse Path Process Property Regex Replace Row Sort Split Static StringBuilder Substring Switch Tuple Window

Strings. Nearly every program uses strings. In strings, we find characters, words and textual data. The string type allows us to test and manipulate character data.
Methods. Here are the methods and properties on strings. Some are static. We access them on the string type (like string.Empty). Complex algorithms often use many string methods.CompareCompareOrdinalCompareToConcatContainsCopyCopyToEndsWithEmptyEqualsFormatGetEnumeratorGetHashCodeIndexOfIndexOfAnyInsertInternIsInternedIsNormalizedIsNullOrEmptyIsNullOrWhiteSpaceJoinLastIndexOfLastIndexOfAnyLengthNormalizePadLeftPadRightRemoveReplaceSplitStartsWithSubstringToCharArrayToLowerToLowerInvariantToStringToUpperToUpperInvariantTrimTrimEndTrimStart
String interpolation. A string can be created with interpolated values in it. This is similar to string.Format but the syntax is different. We precede the string literal with a "$" sign.String Interpolation

Cats:This is an integer local variable. It equals 100 (there are lots of cats). It is inserted into the "{cats}" part of the literal.

Dogs:This equals 2. It is inserted into the interpolated string literal at the "{dogs}" position.

Based on: .NET 4.6

C# program that uses string interpolation

using static System.Console;

class Program
    static void Main()
	int cats = 100;
	int dogs = 2;

	// Create a string with string interpolation syntax.
	string animals = $"cats = {cats} and dogs = {dogs}";
	// Call Console.WriteLine.


cats = 100 and dogs = 2
Constructor. Strings are often reused, and passed around within a program. Methods like Replace() create new strings. But we can also create new ones with a constructor.String Constructor
Literals. These specify string data. We use quotes around literal data (characters). Literals are embedded in the program executable.Literal
Comparisons. Are two strings equal? In a Dictionary, we can use a StringComparer to change how keys are compared. We can ignore case.StringComparerStringComparison
TextInfo. This type provides some helpful methods. We can convert a string To Title Case with ToTitleCase. No custom methods are needed.TextInfoTextInfo: ToTitleCase
Whitespace. Strings often contain newline or whitespace. We often need to check for these values. We use methods like IsNullOrWhitespace.NewLineLine CountWhitespace
Empty. An empty string has zero characters. Meanwhile a null string is no string at all. It is a reference that points to no memory location.Empty StringsNull Strings
Chars. A string contains data made up of individual characters. We deal with these chars in looping constructs. Accessing chars is a fast way to test strings.CharString Chars
Loops. We can loop over a string with any style of loop. When no index is required, a foreach-loop will result in the clearest code.ForeachFor, string
Parse, TryParse. These methods transform strings into other types. Many parsing routines are built-in. Usually it is a bad idea to create our own if one already exists.Parse
Conversions. We can convert a list into a string. And we can convert a string into a byte array. These are some of the most common conversions.Convert List, StringConvert String, Byte ArrayConvert String, Int
Performance. In typical usage strings are fast. But they are sometimes used in an inefficient way. Often reducing string allocations is helpful.Equals PerformanceInterpolation BenchmarkMemory UsageToString CacheToString Formats
Custom methods. Many string algorithms are composed from the built-in methods. With Substring calls we can Truncate strings. With ToCharArray we can change characters.IsUpper, IsLowerRightToCharArray: Edit CharsTruncateUppercase First Letters
Explanations. I explain concepts of strings. How do we append strings when there is no append method? We also learn to increment strings.String AppendString IncrementString Property
StringBuilder. This is not a string, but it is used to build up or change strings. For appending strings in a loop, we likely want to use StringBuilder.StringBuilder
A review. A string is immutable. It can be used in many methods, and none of them have to worry about data changes. It never becomes invalid. This reduces copies.