Skip to content
Snippets Groups Projects
Commit 745bcc0f authored by Uwe Wienkop's avatar Uwe Wienkop
Browse files

2021-11-30 Abschluss String-Operationen

parent 1a86037e
Branches
No related tags found
No related merge requests found
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>_09_CaesarCodierung</RootNamespace>
</PropertyGroup>
</Project>
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));
}
}
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>_09_StringOperationen</RootNamespace>
</PropertyGroup>
</Project>
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);
}
}
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>_09_StringSplit</RootNamespace>
</PropertyGroup>
</Project>
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();
}
}
}
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment