none
strings vergleichen und einzelne Buchstaben rausschmeißen RRS feed

  • 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();
    
          }
          }
        }
    
        
      
    
    
    
    

     

     

    Montag, 30. Mai 2011 21:59

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
    Montag, 30. Mai 2011 22:15
    Moderator
  • Hallo k.,

    ich würde folgendes benutzen:

    string ohne = Regex.Replace(s1, "[" + rausDamit + "]+", " ");
    


    ciao Frank
    Dienstag, 31. Mai 2011 05:40
  • 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

    Dienstag, 31. Mai 2011 08:03
    Moderator

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
    Montag, 30. Mai 2011 22:15
    Moderator
  • Hallo k.,

    ich würde folgendes benutzen:

    string ohne = Regex.Replace(s1, "[" + rausDamit + "]+", " ");
    


    ciao Frank
    Dienstag, 31. Mai 2011 05:40
  • 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

    Dienstag, 31. Mai 2011 08:03
    Moderator
  • Vielen Dank!!! Ihr habt mir sehr geholfen!
    Dienstag, 31. Mai 2011 20:55