diff --git a/09 CaesarCodierung/09 CaesarCodierung.csproj b/09 CaesarCodierung/09 CaesarCodierung.csproj
new file mode 100644
index 0000000000000000000000000000000000000000..2e7e888d1ccb2d7cece6226e1665cb143657fc95
--- /dev/null
+++ b/09 CaesarCodierung/09 CaesarCodierung.csproj	
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <RootNamespace>_09_CaesarCodierung</RootNamespace>
+  </PropertyGroup>
+
+</Project>
diff --git a/09 CaesarCodierung/Program.cs b/09 CaesarCodierung/Program.cs
new file mode 100644
index 0000000000000000000000000000000000000000..628c966d599475fabb76d24aa936c42bdaf57808
--- /dev/null
+++ b/09 CaesarCodierung/Program.cs	
@@ -0,0 +1,41 @@
+using System;
+
+namespace _09_CaesarCodierung
+{
+    class Program
+    {
+        static string CaesarCodierung(string s, int shift)
+        {
+            string erg = "";
+
+            foreach (char c in s)
+            {
+                int codiert = c + shift;
+
+                if (codiert > 'Z')                // rechts hinausgelaufen
+                    codiert -= 26;
+                else if (codiert < 'A')           // links hinausgelaufen
+                    codiert += 26;
+                erg += (char)codiert;
+            }
+            
+            return erg;
+        }
+        static void Main(string[] args)
+        {
+            // Shift=1:  ABCZ --> BCDA
+            // Shift=2:  ABCZ --> CDEB
+            // Shift=-1: ABCZ --> ZABY
+
+            //Console.WriteLine(CaesarCodierung("ABCZ", 1));
+            //Console.WriteLine(CaesarCodierung("ABCZ", 2));
+            //Console.WriteLine(CaesarCodierung("ABCZ", -1));
+
+            Random wuerfel = new Random();
+            string geheim = CaesarCodierung("HELLOWORLD", wuerfel.Next(1, 25));
+
+            for (int i = -1; i > -26; i--)
+                Console.WriteLine(CaesarCodierung(geheim, i));
+        }
+    }
+}
diff --git a/09 StringOperationen/09 StringOperationen.csproj b/09 StringOperationen/09 StringOperationen.csproj
new file mode 100644
index 0000000000000000000000000000000000000000..3627b2c8bf758e4b658336cf04b2df71e90b5be0
--- /dev/null
+++ b/09 StringOperationen/09 StringOperationen.csproj	
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <RootNamespace>_09_StringOperationen</RootNamespace>
+  </PropertyGroup>
+
+</Project>
diff --git a/09 StringOperationen/Program.cs b/09 StringOperationen/Program.cs
new file mode 100644
index 0000000000000000000000000000000000000000..2c7a7369002bedd842b8cd88fa3419f0b6cc5f96
--- /dev/null
+++ b/09 StringOperationen/Program.cs	
@@ -0,0 +1,58 @@
+using System;
+using System.Text;
+
+namespace _09_StringOperationen
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            string s = "Hello World!";
+            // s[1] = 'E';                      // NICHT ERLAUBT! Strings sind read-only!!!
+
+            string s1 = s.Substring(6);         // --> "World!"
+            string s2 = s.Substring(1, 4);      // --> "ello"
+
+            s.Contains("World");                // --> true
+            s.StartsWith("Hello");              // --> true
+
+            s.Split(' ');                       // --> string[] {"Hello", "World!"}
+
+            s.ToLower();                        // --> "hello world!"
+            s.ToUpper();                        // --> "HELLO WORLD!"
+
+            s.IndexOf("World");                 // --> 6 || -1 bei nicht-Vorkommen
+            s.IndexOf("o", 6);                  // --> 7
+
+            string s3 = "";
+            for (char letter = 'A'; letter <= 'Z'; letter++)
+            {
+                // Console.WriteLine(letter);
+                s3 += letter; // "" + 'A' --> "A" + 'B' --> "AB"  --> ...
+            }
+            Console.WriteLine(s3);
+
+            DateTime t0 = DateTime.Now;
+            string s4 = "";
+            for (int i=0; i<200000; i++)
+                s4 += ".";
+            DateTime t1 = DateTime.Now;
+            Console.WriteLine($"Rechenzeit: {(t1-t0).TotalMilliseconds}ms");
+
+            // s4 = ""          Speicheranforderung 0 Zeichen
+            // s4 = "" + "."    Speicheranforderung für 1 Zeichen; Umkopieren von "" und "."
+            // s4 = "." + "."   Speicheranforderung für 2 Zeichen; Umkopieren von "." und "."
+            // s4 = ".." + "."  Speicheranforderung für 3 Zeichen; Umkopieren von ".." und "."
+
+
+
+            StringBuilder sb = new StringBuilder(200000);
+            for (int i = 0; i < 200000; i++)
+                sb.Append( ".");
+            s4 = sb.ToString();
+            DateTime t2 = DateTime.Now;
+            Console.WriteLine($"Rechenzeit: {(t2 - t1).TotalMilliseconds}ms");
+            Console.WriteLine(s4);
+        }
+    }
+}
diff --git a/09 StringSplit/09 StringSplit.csproj b/09 StringSplit/09 StringSplit.csproj
new file mode 100644
index 0000000000000000000000000000000000000000..f10ccdf4636c6eb2076094c38e01efcd0226cf94
--- /dev/null
+++ b/09 StringSplit/09 StringSplit.csproj	
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <RootNamespace>_09_StringSplit</RootNamespace>
+  </PropertyGroup>
+
+</Project>
diff --git a/09 StringSplit/Program.cs b/09 StringSplit/Program.cs
new file mode 100644
index 0000000000000000000000000000000000000000..18bf58c6cee79eacdb76536807bcca6f9f2c36f6
--- /dev/null
+++ b/09 StringSplit/Program.cs	
@@ -0,0 +1,80 @@
+using System;
+using System.Collections.Generic;
+
+namespace _09_StringSplit
+{
+    class Program
+    {
+        static bool IsLetter(char c)
+        {
+            return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
+        }
+        static string[] StringSplit(string s)
+        {
+            List<string> erg = new List<string>();
+            int i = 0;
+            int anfWortInd;
+
+            while (i < s.Length)
+            {
+                // 1. Solange String-Ende noch nicht erreicht: Etwaige Nicht-Buchstaben überspringen
+                while (i < s.Length && !IsLetter(s[i]))  // ! ~ NOT
+                    i++;
+
+                // 2a.  Wortanfangsposition merken
+                anfWortInd = i;
+
+
+                if (i < s.Length)
+                {
+                // 2b.  Buchstaben des Worts durchlaufen bis entweder
+                //          - String-Ende erreicht oder
+                //          - Erstes Nicht-Buchstabenzeichen gefunden 
+                    while (i < s.Length && IsLetter(s[i]))
+                        i++;
+                    // 2c.  Wortende minus Wortanfang = Wortlänge
+                    // 3. Wort per SubString() entnehmen und der Liste hinzufügen
+                    erg.Add(s.Substring(anfWortInd, i - anfWortInd));
+                }
+            }
+            return erg.ToArray();  // s.Split(new char[] { ' ', '!' },StringSplitOptions.RemoveEmptyEntries);
+        }
+
+        static void StringSplitTest(string s)
+        {
+            Console.WriteLine($"Gegeben: |{s}|");
+            string[] sf = StringSplit(s);
+            foreach (string s1 in sf)
+            {
+                Console.WriteLine($"    |{s1}|");
+            }
+            Console.WriteLine("-------------");
+        }
+        static void Main(string[] args)
+        {
+            //string s = "  Dies ist  ein Beispieltext!";
+            //Console.WriteLine(s);
+            //Console.WriteLine(s.Substring(2));
+            //Console.WriteLine(s.Substring(2,4));
+
+            StringSplitTest("Dies ist  ein Beispieltext!");
+            StringSplitTest("  Dies ist  ein Beispieltext!");
+            StringSplitTest("Dies ist  ein Beispieltext");
+            StringSplitTest("");
+            StringSplitTest("    ");
+
+
+
+            //List<string> freunde = new List<string>();
+            //freunde.Add("Anton");
+            //freunde.Add("Berta");
+            //freunde.Add("Claudia");
+
+            //foreach (string freund in freunde)
+            //{
+            //    Console.WriteLine(freund);
+            //}
+            //string[] sf = freunde.ToArray();
+        }
+    }
+}
diff --git a/Prog1_WS2021_22.sln b/Prog1_WS2021_22.sln
index 034930f5f85f68a53befd52c5eb592a23d86aed7..a843dddff7d9d26915cce390fb28678528042d1c 100644
--- a/Prog1_WS2021_22.sln
+++ b/Prog1_WS2021_22.sln
@@ -65,17 +65,23 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "08 2D_Felder_Ubg_Di", "08 2
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "08 ZeichenkettenIntro", "08 ZeichenkettenIntro\08 ZeichenkettenIntro.csproj", "{36213D4C-1100-4634-A883-1BC46FD24298}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "09 Palindrom_Easy", "09 Palindrom_Easy\09 Palindrom_Easy.csproj", "{BD349A0C-121D-4705-8235-027626A20A11}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "09 Palindrom_Easy", "09 Palindrom_Easy\09 Palindrom_Easy.csproj", "{BD349A0C-121D-4705-8235-027626A20A11}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "09 PalindromFinal", "09 PalindromFinal\09 PalindromFinal.csproj", "{91016469-B34B-42B3-A4B7-7872847C8984}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "09 PalindromFinal", "09 PalindromFinal\09 PalindromFinal.csproj", "{91016469-B34B-42B3-A4B7-7872847C8984}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "09 PalindromFinalTest", "09 PalindromFinalTest\09 PalindromFinalTest.csproj", "{4A14022F-4D0C-40FA-9ED3-46C77CE89308}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "09 PalindromFinalTest", "09 PalindromFinalTest\09 PalindromFinalTest.csproj", "{4A14022F-4D0C-40FA-9ED3-46C77CE89308}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "09 CompareTo", "09 CompareTo\09 CompareTo.csproj", "{69FD48D6-46D0-494F-9AE6-54C6280D3C8D}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "09 CompareTo", "09 CompareTo\09 CompareTo.csproj", "{69FD48D6-46D0-494F-9AE6-54C6280D3C8D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "09 Histogramm", "09 Histogramm\09 Histogramm.csproj", "{9AC7E71B-8FC3-48CC-9963-B18CAC1D4413}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "09 Histogramm", "09 Histogramm\09 Histogramm.csproj", "{9AC7E71B-8FC3-48CC-9963-B18CAC1D4413}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "09 Contains_UebgMo", "09 Contains_UebgMo\09 Contains_UebgMo.csproj", "{560601CF-F420-4B9E-85A4-553236DA123A}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "09 Contains_UebgMo", "09 Contains_UebgMo\09 Contains_UebgMo.csproj", "{560601CF-F420-4B9E-85A4-553236DA123A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "09 StringSplit", "09 StringSplit\09 StringSplit.csproj", "{E832992A-9736-400D-B1DD-7C76C1975210}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "09 StringOperationen", "09 StringOperationen\09 StringOperationen.csproj", "{C8566764-6360-4E7D-B570-06BD184252FC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "09 CaesarCodierung", "09 CaesarCodierung\09 CaesarCodierung.csproj", "{663C2A15-A65A-4520-9125-A891A1D8CC4D}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -231,6 +237,18 @@ Global
 		{560601CF-F420-4B9E-85A4-553236DA123A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{560601CF-F420-4B9E-85A4-553236DA123A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{560601CF-F420-4B9E-85A4-553236DA123A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E832992A-9736-400D-B1DD-7C76C1975210}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E832992A-9736-400D-B1DD-7C76C1975210}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E832992A-9736-400D-B1DD-7C76C1975210}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E832992A-9736-400D-B1DD-7C76C1975210}.Release|Any CPU.Build.0 = Release|Any CPU
+		{C8566764-6360-4E7D-B570-06BD184252FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{C8566764-6360-4E7D-B570-06BD184252FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{C8566764-6360-4E7D-B570-06BD184252FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{C8566764-6360-4E7D-B570-06BD184252FC}.Release|Any CPU.Build.0 = Release|Any CPU
+		{663C2A15-A65A-4520-9125-A891A1D8CC4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{663C2A15-A65A-4520-9125-A891A1D8CC4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{663C2A15-A65A-4520-9125-A891A1D8CC4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{663C2A15-A65A-4520-9125-A891A1D8CC4D}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE