C# :: Aufgabe #389

4 Lösungen Lösungen öffentlich

Vokale tauschen (rückwärts ausgeben)

Anfänger - C# von JKooP - 16.04.2021 um 21:31 Uhr
Gegeben ist eine Zeichenkette (Wort) welche nur aus Groß- und Kleinbuchstaben gebildet wird.
Ziel ist es, die Zeichen so zu verändern, dass der erste Vokal mit dem letzten, der zweite mit dem vorletzten
und so weiter getauscht wird. Konsonanten werden nicht verändert.
Groß- und Kleinschreibung soll beachtet werden.

Beispiele:
s = Hallo
Lösung: Holla

s = Heidi
Lösung: Hiide (Das "i" in der Mitte bleibt erhalten, da kein Tauschpartner vorhanden!)

s = trAInyOUrprOgrAmmEr
Lösung: trEAnyOUrprOgrImmAr

Erstelle eine Methode/Funktion, die oben beschriebene Aufgabenstellung erledigt.

Viel Spaß

Lösungen:

2 Kommentare
vote_ok
von dson (430 Punkte) - 21.04.2021 um 15:12 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Linq;
using System.Collections.Generic;

namespace vokabeln_tauschen
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "trAInyOUrprOgrAmmEr";   //Text welcher bearbeitet wird.
            int position = 0;

            List<char> liste1 = new List<char>();  
            char[] buchstaben = s.ToCharArray();

            //Hier werden alle Umlaute aus dem Zeichensatz heraus gefiltert und in verkehrter reihenfolge auf die liste1 geschrieben.
            foreach (var item in buchstaben.Reverse())
            {
                if (item.Equals('a') || item.Equals('e') || item.Equals('i') || item.Equals('o') || item.Equals('u') || item.Equals('A') || item.Equals('E') || item.Equals('I') || item.Equals('O') || item.Equals('U'))
                {
                    liste1.Add(item);
                }
            }
            //Damit der Folgende Codeblock sich leochter und kürzer umsetzen lässt wird zuerst alles von der List in einen Array geschrieben
            char[] umlaute = liste1.ToArray();
            foreach (var item in buchstaben)
            {
                //Kommt ein Umlaut so wird dieser durch einen des umlaute Arrays ersetzt (da dieser Array verkehrt herum ist sind somit alle Umlaute wie gewünscht gedreht)
                if (item.Equals('a') || item.Equals('e') || item.Equals('i') || item.Equals('o') || item.Equals('u') || item.Equals('A') || item.Equals('E') || item.Equals('I') || item.Equals('O') || item.Equals('U'))
                {
                    Console.WriteLine(umlaute[position]);
                    position++;
                }
                else
                {
                   Console.WriteLine(item);
                }
            }
        }
    }
}

vote_ok
von dson (430 Punkte) - 21.04.2021 um 15:34 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Linq;
using System.Collections.Generic;

namespace vokabeln_tauschen
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "trAInyOUrprOgrAmmEr";   //Text welcher bearbeitet wird.
            int position = 0;

            List<char> liste1 = new List<char>();  
            char[] buchstaben = s.ToCharArray();

            //Hier werden alle Umlaute aus dem Zeichensatz heraus gefiltert und in verkehrter reihenfolge auf die liste1 geschrieben.
            foreach (var item in buchstaben.Reverse())
            {
                if (item.Equals('a') || item.Equals('e') || item.Equals('i') || item.Equals('o') || item.Equals('u') || item.Equals('A') || item.Equals('E') || item.Equals('I') || item.Equals('O') || item.Equals('U'))
                {
                    liste1.Add(item);
                }
            }
            //Damit der Folgende Codeblock sich leochter und kürzer umsetzen lässt wird zuerst alles von der List in einen Array geschrieben
            char[] umlaute = liste1.ToArray();
            foreach (var item in buchstaben)
            {
                //Kommt ein Umlaut so wird dieser durch einen des umlaute Arrays ersetzt (da dieser Array verkehrt herum ist sind somit alle Umlaute wie gewünscht gedreht)
                if (item.Equals('a') || item.Equals('e') || item.Equals('i') || item.Equals('o') || item.Equals('u') || item.Equals('A') || item.Equals('E') || item.Equals('I') || item.Equals('O') || item.Equals('U'))
                {
                    Console.WriteLine(umlaute[position]);
                    position++;
                }
                else
                {
                   Console.WriteLine(item);
                }
            }
        }
    }
}

vote_ok
von dson (430 Punkte) - 21.04.2021 um 15:42 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Linq;
using System.Collections.Generic;

namespace vokabeln_tauschen
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "trAInyOUrprOgrAmmEr";   //Text welcher bearbeitet wird.
            int position = 0;

            List<char> liste1 = new List<char>();  
            char[] buchstaben = s.ToCharArray();

            //Hier werden alle Umlaute aus dem Zeichensatz heraus gefiltert und in verkehrter reihenfolge auf die liste1 geschrieben.
            foreach (var item in buchstaben.Reverse())
            {
                if (item.Equals('a') || item.Equals('e') || item.Equals('i') || item.Equals('o') || item.Equals('u') || item.Equals('A') || item.Equals('E') || item.Equals('I') || item.Equals('O') || item.Equals('U'))
                {
                    liste1.Add(item);
                }
            }
            //Damit der Folgende Codeblock sich leochter und kürzer umsetzen lässt wird zuerst alles von der List in einen Array geschrieben
            char[] umlaute = liste1.ToArray();
            foreach (var item in buchstaben)
            {
                //Kommt ein Umlaut so wird dieser durch einen des umlaute Arrays ersetzt (da dieser Array verkehrt herum ist sind somit alle Umlaute wie gewünscht gedreht)
                if (item.Equals('a') || item.Equals('e') || item.Equals('i') || item.Equals('o') || item.Equals('u') || item.Equals('A') || item.Equals('E') || item.Equals('I') || item.Equals('O') || item.Equals('U'))
                {
                    Console.WriteLine(umlaute[position]);
                    position++;
                }
                else
                {
                   Console.WriteLine(item);
                }
            }
        }
    }
}

vote_ok
von JKooP (13960 Punkte) - 22.04.2021 um 18:47 Uhr
NET 5.x; C# 9.x; VS-2019
Quellcode ausblenden C#-Code
using System.Text.RegularExpressions;
using System.Linq;
using System.Text;

var s = "trAInyOUrprOgrAmmEr";

var sb = new StringBuilder();
var vowels = "AaEeIiOoUu";
var matches = new Regex(@"[" + vowels + "]").Matches(s).Reverse().Select(x => x.Value[0]).ToList();
var k = 0;
s.ToList().ForEach(v => sb.Append(vowels.Contains(v) ? matches[k++] : v));

System.Console.WriteLine(sb);