static async Task Main(string[] args) { try { // create stringbuilder and append some text StringBuilder stringToRead22 = new StringBuilder(); stringToRead22.AppendLine("ABC"); //stringToRead22.AppendLine("and 2nd line"); //stringToRead22.AppendLine("Characters in 1st line to read"); //stringToRead22.AppendLine("and 2nd line"); //stringToRead22.AppendLine("and the end, end end"); StringReader readerA = new StringReader(stringToRead22.ToString()); int aPeek = readerA.Peek(); string textRead = readerA.ReadToEnd(); Console.WriteLine(textRead); int a = readerA.Peek(); // using new stringreader, read text in StringBuilder using (StringReader reader = new StringReader(stringToRead22.ToString())) { string readText = await reader.ReadToEndAsync(); Console.WriteLine(readText); } // Create a StringBuilder that expects to hold 50 characters. // Initialize the StringBuilder with "ABC". StringBuilder sb22 = new StringBuilder("ABC", 50); // Append three characters (D, E, and F) to the end of the StringBuilder. sb22.Append(new char[] { 'D', 'E', 'F' }); // Append a format string to the end of the StringBuilder. sb22.AppendFormat("GHI{0}{1}", 'J', 'k'); // Display the number of characters in the StringBuilder and its string. Console.WriteLine("{0} chars: {1}", sb22.Length, sb22.ToString()); // Insert a string at the beginning of the StringBuilder. sb22.Insert(0, "Alphabet: "); // Replace all lowercase k's with uppercase K's. sb22.Replace('k', 'K'); // Display the number of characters in the StringBuilder and its string. Console.WriteLine("{0} chars: {1}", sb22.Length, sb22.ToString()); var item = new Vegetable("eggplant"); var date = DateTime.Now; var price = 1.99m; var unit = Unit.item; string toCaps = item.Name; // implicit cast to string Console.WriteLine($"On {date}, the price of {item} was {price} per {unit}. Called: {toCaps.ToUpper()}"); LastCharExample(); string s11 = "Hello "; string s22 = s11; s11 += "World"; // << Modified s1, but what about s2? (Hint - created a new string here...) Console.WriteLine(s22); //Output = Hello << It stays the same, because it is pointing to the ORIGINAL s11 object Console.WriteLine(s11); // Outputs 'Hello World' (Modified s11 object) // calling check() Method check("1234", 3); check("Tsunami", 3); check("psyc0lo", 4); // declaring and initializing string s1 string s1 = new String(new char[] { 'a', '\uD800', '\uDC00', 'z' }); check(s1, 1); } catch (ArgumentNullException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (ArgumentOutOfRangeException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } EnumerateAndDisplay("Test Case"); EnumerateAndDisplay("This is a sentence."); EnumerateAndDisplay("Has\ttwo\ttabs"); EnumerateAndDisplay("Two\nnew\nlines"); string path = "c:\\mypath\\to\\myfile.txt"; // The @ allows you to do this: string path2 = @"c:\mypath\to\myfile.txt"; Console.WriteLine(path); Console.WriteLine(path2); string name = "Forrest"; string surname = "Gump"; int year = 3; string sDollarSign = $"My name is {name} {surname} and once I run more than {year} years."; Console.WriteLine(sDollarSign); string expectedResult = "My name is Forrest Gump and once I run more than 3 years."; Console.WriteLine(expectedResult); string text = "World"; var message = $"Hello, {text}"; Console.WriteLine(message); // Prints Hello, World var anInt = 1; var aBool = true; var aString = "3"; var formated = $"{anInt},{aBool},{aString}"; Console.WriteLine(formated); String testString = "Arnie Volestrangler"; testString = testString.ToLower(); Console.WriteLine(testString); string factMessage = "Extension methods have all the capabilities of regular static methods."; // Write the string and include the quotation marks. Console.WriteLine($"\"{factMessage}\""); // This search returns the substring between two strings, so // the first index is moved to the character just after the first string. int first = factMessage.IndexOf("methods") + "methods".Length; int last = factMessage.LastIndexOf("methods"); string str2 = factMessage.Substring(first, last - first); Console.WriteLine($"Substring between \"methods\" and \"methods\": '{str2}'"); // Search Strings string factMessage2 = "Extension methods have all the capabilities of regular static methods."; // Write the string and include the quotation marks. Console.WriteLine($"\"{factMessage2}\""); // Simple comparisons are always case sensitive! bool containsSearchResult = factMessage2.Contains("extension"); Console.WriteLine($"Starts with \"extension\"? {containsSearchResult}"); // For user input and strings that will be displayed to the end user, // use the StringComparison parameter on methods that have it to specify how to match strings. bool ignoreCaseSearchResult = factMessage2.StartsWith("extension", System.StringComparison.CurrentCultureIgnoreCase); Console.WriteLine($"Starts with \"extension\"? {ignoreCaseSearchResult} (ignoring case)"); bool endsWithSearchResult = factMessage2.EndsWith(".", System.StringComparison.CurrentCultureIgnoreCase); Console.WriteLine($"Ends with '.'? {endsWithSearchResult}"); try { // Open the text file using a stream reader. using (StreamReader sr = new StreamReader("TextFile.txt")) { // Read the stream to a string, and write the string to the console. String line = sr.ReadToEnd(); Console.WriteLine(line); } } catch (IOException e) { Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); } // StringReader Ex 1 StringBuilder stringToRead = new StringBuilder(); stringToRead.AppendLine("Characters in 1st line to read"); stringToRead.AppendLine("and 2nd line"); stringToRead.AppendLine("and the end"); using (System.IO.StringReader reader = new System.IO.StringReader(stringToRead.ToString())) { string readText = await reader.ReadToEndAsync(); Console.WriteLine(readText); } //stringReader Ex 2 // From textReaderText, create a continuous paragraph // with two spaces between each sentence. string aLine, aParagraph = null; String textReaderText = "HERE IS SOME TEXT"; StringReader strReader = new StringReader(textReaderText); strReader.Close(); while (true) { aLine = strReader.ReadLine(); if (aLine != null) { aParagraph = aParagraph + aLine + " "; } else { aParagraph = aParagraph + "\n"; break; } } Console.WriteLine("Modified text:\n\n{0}", aParagraph); // Create a StringBuilder that expects to hold 50 characters. // Initialize the StringBuilder with "ABC". StringBuilder sb = new StringBuilder("ABC", 50); StringBuilder sb2 = new StringBuilder("AVERYLONGSTRINGYOUWOULDNOTWANTTOSPELL", 5, 4, 100); sb2.Append(10.2); sb2.Append('Y'); sb2.Append(true); sb2.Append(false); sb2.Append("AVERY", 0, 5); sb2.Append("START", 0, 4); sb2.Replace("LONG", "SHORT"); sb2.Insert(0, "BEGIN"); sb2.Append("FRONTBACK", 5, 4); char[] a1 = new char[] { 'X', 'Y', 'Z' }; sb2.Append(new char[] { 'X', 'Y', 'Z' }); sb2.Append(a1); Console.WriteLine(sb2.ToString()); //// Append three characters (D, E, and F) to the end of the StringBuilder. //sb.Append(new char[] { 'D', 'E', 'F' }); //// Append a format string to the end of the StringBuilder. //sb.AppendFormat("GHI{0}{1}", 'J', 'k'); //// Display the number of characters in the StringBuilder and its string. //Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString()); //// Insert a string at the beginning of the StringBuilder. //sb.Insert(0, "Alphabet: "); //// Replace all lowercase k's with uppercase K's. //sb.Replace('k', 'K'); //// Display the number of characters in the StringBuilder and its string. //Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString()); Console.WriteLine("Here we go"); Console.ReadLine(); }