Entwickler-Ecke
C# - Die Sprache - Programm soll String einlesen und alle Umlaute löschen
tobyyy - Fr 06.11.09 21:04
Titel: Programm soll String einlesen und alle Umlaute löschen
Servus!
Also eigentlich habe ich bei meinem Programm fast alles so hinbekommen wie es sein soll. Allerdings möchte ich, wenn die Umlaute gelöscht werden, dass kein Leerzeichen zurückbleibt. Das heißt aus "Hallo Leute" soll "Hll Lt" und nicht "H ll L t" werden.
Wär cool, wenn ihr mir helfen könnt.
Hier mal der Quellcode:
using System;
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53:
| class hausi2 { static void entf_vokal(string woerter, string vokal) {
char[] feld=new char[woerter.Length]; for(int x=0; x<woerter.Length; ++x){ feld[x]=Convert.ToChar(woerter[x]); } for(int x=0;x<woerter.Length; ++x){ if(feld[x]==vokal[0]) feld[x]='\0';
}
for(int x=0;x<woerter.Length; ++x){ if(feld[x]==vokal[1]) feld[x]='\0';
}
for(int x=0;x<woerter.Length; ++x){ if(feld[x]==vokal[2]) feld[x]='\0';
}
for(int x=0;x<woerter.Length; ++x){ if(feld[x]==vokal[3]) feld[x]='\0';
}
for(int x=0;x<woerter.Length; ++x){ if(feld[x]==vokal[4]) feld[x]='\0';
}
for(int x=0;x<feld.Length;++x){ Console.Write(feld[x]); } } static void Main() { string woerter_eingabe=Console.ReadLine(); string vokale="aeiou"; entf_vokal(woerter_eingabe,vokale); }
} |
Grüße,
Tobi
Moderiert von
Christian S.: C#-Tags hinzugefügt
JasonDelife - Fr 06.11.09 21:21
Ein StringBuilder wäre hier wohl besser.
Zudem solltest du "umlaute" auch in einer Schleife durchgehen, in der du den char zu einem String wandelst und diesen dann mittels Replace(string, string) durch den String "" ersetzen lässt.
Grüße, JasonDelife.
Christian S. - Fr 06.11.09 21:36
Nur, damit ich das richtig verstehe:
Du schreibst eine Methode "sortier", die bekommt einen String mit dem Namen "woerter" übergeben, der nur ein Wort enthält. Die (durch fehlende Einrückung praktisch unlesbare) Methode soll das eine Wort gar nicht sortieren, was ja auch sinnfrei wäre, sondern Umlaute entfernen, was Du mit einem Beispiel deutlich machst, wo aber Vokale entfernt werden.
Insgesamt bleibt mir da nur der Hinweis auf String.Replace, denke ich. Wenn Du genauer weißt, was Du willst und Dein Quelltext so ist, dass man ihn lesen will, kann man wohl besser helfen ;-)
tobyyy - Fr 06.11.09 22:42
Okay entschuldigung ich habe den Quellcode jetzt etwas "verschönert". Aber ich denke mein Problem ist trotzdem deutlich geworden.
Ihr habt mir ja schon den Vorschlag mit string.Replace gemacht. Könntet ihr das noch etwas genauer erläutern? Programmier jetzt erst seit einem Monat mit C# und habs leider noch net so drauf.
Grüßle
JasonDelife - Fr 06.11.09 23:03
So ungefähr:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| foreach(char c in charsToRemove) { text.Replace(c.ToString(), ""); } |
Ich hoffe es ist ersichtlich, was der Code tun soll. Wenn nicht, dann frag' einfach.
Anmerkung: Ich weiß natürlich nicht, wie es mit der Performance bei großen Texten aussieht, aber es sollte für dein Problem genügen.
Grüße, JasonDelife.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!