Benutzer mit den meisten Antworten
strings vergleichen und einzelne Buchstaben rausschmeißen

Frage
-
Hallöchen zusammen,
ich möchte gerne zwei strings miteinander vergleichen und einzelne Buchstaben rausschmeißen, die vorher auch eingegeben werden.
Habe es soweit hinbekommen, dass das Programm das mit einem einzelnen Buchstabend schafft. (z.B. wird aus "Hallo Hallo" ein "Ha o Ha o" wenn man als zweiten Buchstaben ein "l" eingibt.) Sobald ich aber noch einen zweiten Buchstaben entfernen möchte funktionierts nicht mehr. Habe mich schon durch mehrere Foren gelesen, aber auf des Rätsels Lösung bin ich leider noch nicht gekommen. Weis jemand wie ich das am besten anstelle? Mit Listen, Felder oder lasse ich es so wie es ist..? Hoffe ihr habt einen Rat für mich. Vielen Dank.
Hier noch mein Quellcode:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine("Geben Sie ein paar Worte ein..."); string s1 = Console.ReadLine(); Console.WriteLine("Geben Sie die Buchstaben ein, die rausfliegen sollen."); string rausDamit = Console.ReadLine(); if (s1.Contains(rausDamit)) { string ohne = s1.Replace(rausDamit, " "); Console.WriteLine(ohne); } else { Console.WriteLine("Entweder haben Sie keinen Satz eingegeben, oder die eingegebenen Buchstabend sind in dem Satz nicht vorhanden"); } Console.ReadLine(); } } }
Antworten
-
Hi,
wenn es einfach nur einfache Ersetzungen sein sollen, kann man das bspw. so machen:
String oldValue = "..." String newValue = oldValue; String replacement = "al"; foreach( Char replacementChar in replacement.ToCharArray() ) { newValue = newValue.Replace(replacementChar.ToString(), String.Empty ); } textBox1.Text = newValue;
Damit würde dann bspw. bei "Hallo Welt" als Resultat "Ho Wet" rauskommen, da sämtliche "a" und "l" durch einen Leerstring ersetzt werden.
Für komplexeres empfiehlt sich aber eher Regex. Siehe dazu:
http://msdn.microsoft.com/de-de/library/system.text.regularexpressions.regex.aspx
(und die Folgeseiten)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 1. Juni 2011 10:08
-
Hallo k.,
ich würde folgendes benutzen:
string ohne = Regex.Replace(s1, "[" + rausDamit + "]+", " ");
ciao Frank- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 1. Juni 2011 10:08
-
Hallo K.,
Und noch eine Version:
Console.WriteLine("Geben Sie ein paar Worte ein..."); string eingabeString = Console.ReadLine(); Console.WriteLine("Geben Sie die Buchstaben ein, die rausfliegen sollen."); string rausDamit = Console.ReadLine(); char[] bearbeitbareChars = eingabeString.ToCharArray(); for (int i = 0; i < rausDamit.Length; i++ ) { for(int n = 0; n < bearbeitbareChars.Length; n++) { if(bearbeitbareChars[n]==rausDamit[i]) bearbeitbareChars[n] = ' '; } } Console.WriteLine(new String(bearbeitbareChars)); Console.ReadLine();
Gruß
Marcel- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 1. Juni 2011 10:08
Alle Antworten
-
Hi,
wenn es einfach nur einfache Ersetzungen sein sollen, kann man das bspw. so machen:
String oldValue = "..." String newValue = oldValue; String replacement = "al"; foreach( Char replacementChar in replacement.ToCharArray() ) { newValue = newValue.Replace(replacementChar.ToString(), String.Empty ); } textBox1.Text = newValue;
Damit würde dann bspw. bei "Hallo Welt" als Resultat "Ho Wet" rauskommen, da sämtliche "a" und "l" durch einen Leerstring ersetzt werden.
Für komplexeres empfiehlt sich aber eher Regex. Siehe dazu:
http://msdn.microsoft.com/de-de/library/system.text.regularexpressions.regex.aspx
(und die Folgeseiten)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 1. Juni 2011 10:08
-
Hallo k.,
ich würde folgendes benutzen:
string ohne = Regex.Replace(s1, "[" + rausDamit + "]+", " ");
ciao Frank- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 1. Juni 2011 10:08
-
Hallo K.,
Und noch eine Version:
Console.WriteLine("Geben Sie ein paar Worte ein..."); string eingabeString = Console.ReadLine(); Console.WriteLine("Geben Sie die Buchstaben ein, die rausfliegen sollen."); string rausDamit = Console.ReadLine(); char[] bearbeitbareChars = eingabeString.ToCharArray(); for (int i = 0; i < rausDamit.Length; i++ ) { for(int n = 0; n < bearbeitbareChars.Length; n++) { if(bearbeitbareChars[n]==rausDamit[i]) bearbeitbareChars[n] = ' '; } } Console.WriteLine(new String(bearbeitbareChars)); Console.ReadLine();
Gruß
Marcel- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 1. Juni 2011 10:08