Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[C#] String rückwärts ausgeben

Empfohlene Antworten

Veröffentlicht

Hallo Com,

ich habe folgendes Problem:

Ich habe eine Konsolenaplikation geschrieben:

     static void Main(string[] args)

        {

            int i;

            string Wort;

            Console.WriteLine("Geben sie bitte ihr Wort ein.");

            Wort = Console.ReadLine();

            for (i = 0; i < Wort.Length; i++) 

            {

                Console.WriteLine("Hallo I {0}",Wort[i]);


            }




            Console.ReadLine();


        } 

Hierbei gibt er das Wort eben vorwärts aus. Könntet ihr mir vielleicht sagen, wie ich es schaffen könnte, das Wort rückwärts auszugeben, da ich nicht die geringste Ahnung habe wie.

Danke schonmal für die Hilfe. :)


     static void Main(string[] args)

        {

            int i;

            string Wort;

            Console.WriteLine("Geben sie bitte ihr Wort ein.");

            Wort = Console.ReadLine();

            for (i = 0; i < Wort.Length; i++) 

            {

                Console.WriteLine("Hallo I {0}",Wort[Wort.Length-i]);


            }




            Console.ReadLine();


        }


lg

Gateway

Das ganze lässt sich auch mit weniger Aufwand realisieren.

Unter .NET 3.0 wurden für solche Fälle die sog. Extension Methods eingeführt. Ziel der ganzen Sache ist es, Typen zu ergänzen.

Und die Erweiterung der Strings um genau eine solche Reverse() ist ein Klassiker.

Bau Dir eine eigene Klassenbibliothek, wo all Deine Extensionmethods zusammenkommen, die Du dann in alle Projekte einbinden kannst. Oder hier für den Übungszweck erweitere Dein Programm um eine öffentliche, statische Klasse.

Öffentlich Statisch deshalb, weil die Methode ja überall und ohne Instanziierung zur Verfügung stehen soll.

Dort ergänzt Du eine statische,öffentliche Methode, die als Rückgabewert einen String besitzt und der Aufrufparameter ist (this string $Variablenname). Diese Signatur zeigt an, dass Du Dich auf den String-Typ beziehst.

Das ganze sieht dann ungefähr so aus:


public static class MyExtensionMethod
{
public static string Reverse(this string Text)
{
char[] TextArray = Text.ToCharArray();
Array.Reverse(TextArray);
return new string(TextArray);
}
}
[/PHP]

Du wandelst den übergebenen String in ein Char-Array um.

Das Array besitzt die Methode Reverse. Aus dem so veränderten Array generierst Du einfach einen neuen String, den Du zurückgibst :]

[PHP]Console.WriteLine("Probetext".Reverse());

Wäre dann ein möglicher Aufruf.

P.S.: Und das tolle daran... dieser Aufruf steht Dir dann überall da, wo die Klasse verfügbar ist, zur Verfügung.

P.P.S.: Extension Methods sind ein Mittel um alle Objekte zu erweitern. Das Prinzip ist immer das gleiche.

Bearbeitet von lilith2k3

  • Autor

Also ein großes Dankeschön an euch für diese tollen Antworten. :)

Es ist echt schon faszinierend, dass man in C# solche Typen ergänzen kann.

Da ich noch nicht so lange mit C# programmiere und noch relativ ein Anfänger bin, ist es echt schon heftig was man alles damit machen kann.

Und danke für die Tipps lilith2k3.

Nochmals danke für die Hilfe. :)

ist es echt schon heftig was man alles damit machen kann.

Jop! C# kommt dem Programmierer sehr entgegen. Das ist es auch, was in meinen Augen die Sprache vor bspw. Java auszeichnet.

Wenn Du Dir wirklich interessante Konzepte angucken willst, schau Dir am besten einemal folgendes an:

1) Anonyme typen

2) Anonyme Methoden/Lambda-Ausdrücke

3) LINQ


List<Produkte> ProduktListe = new List<Produkte>();

...


foreach(var Produkt in Produkte.Where((product)=>product.preis>25))
{
...
}
[/PHP]

[i].Where[/i] ist eine [i]Extensionmethod[/i] und [i]((product)=>product.preis>25)[/i] ist eine anonyme Funktion.

($Eingangsvariable) => {...} <- Funktionskörper, Klammer kann man auch wie oben gesehen weglassen

Schöner kann man nicht iterieren ... :]

Funky:


"reverse me".Aggregate("", (acc, c) => c + acc);

Langweilig:

new String(text.Reverse().ToArray())

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.