Laden...

String in 2er Blöcke unterteilen und diese anschließend jeweils umkehren

Erstellt von Movementroboter vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.721 Views
Thema geschlossen
M
Movementroboter Themenstarter:in
39 Beiträge seit 2013
vor 9 Jahren
String in 2er Blöcke unterteilen und diese anschließend jeweils umkehren

Hallo Leute,
ich möchte gerne ein String in 2er Blöcke unterteilen und anschließend in ein String array speichern damit ich die Blöcke Reversen kann.

z.B so.

Code (Text):


string text = "123456";
            int blockgroeße = 2;
          int stringLength = text.Length;
           for (int i = 0; i < stringLength; i += blockgroeße)
           {
               if (i + blockgroeße > stringLength) blockgroeße = stringLength - i;
              string neu = text.Substring(i, blockgroeße);
               Console.WriteLine(neu);
           }

Das Ergebnis sollte dann so aussehen: 214365

Wie kann ich nun die Blöcke in ein Array schreiben und Reversen ?

Liebe Grüße und ein angenehmes Wochenende,
Movementroboter

1.361 Beiträge seit 2007
vor 9 Jahren

Hey,

Für das Umdrehen gibt es Array.Reverse. Es gibt sogar eine Variante, wo man inline nur einen Teil eines Array umdrehen kann. Das wäre für dich perfekt. Für strings direkt gibt es keine solche Hilfsmethoden. Daher am besten zu Beginn einmal in ein Char-Array umwandeln, alles umdrehen in den Blöcken und am Ende wieder zu einem String umwandeln:

string text = "123456";
int chunkSize = 2;        

char[] chars = text.ToCharArray();
for (int i=0; i<chars.Length; i+=chunkSize)
{
    Array.Reverse(chars, i, Math.Min(chunkSize, chars.Length - i));
}
string result = new String(chars);

System.Console.WriteLine(result);

beste Grüße
zommi

M
Movementroboter Themenstarter:in
39 Beiträge seit 2013
vor 9 Jahren

Hallo zommi,
Danke für die Antwort und den tollen Tipp mit der Inline Variante 🙂🙂🙂

Habe es auch hinbekommen aber bisschen umfangreicher 😁


string test1= "12" ;
            char[] b = test1.ToCharArray();
            Array.Reverse(b);
            test1= new string(b);

            string test2= "34";
            char[] c = test2.ToCharArray();
            Array.Reverse(c);
            test2= new string(c);

            string test3= "56";
            char[] d = test3.ToCharArray();
            Array.Reverse(d);
            test3 = new string(d);


Liebe Grüße,
Movementroboter

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo Movementroboter,

naja, das würde ich schon per Schleife machen.

Wie zommi richtig sagt, sollte man zum Bearbeiten den String in eine char-Array umwandeln, dass dann bearbeiten und am Ende wieder einen String daraus machen.
Da du immer nur zwei benachbarte Zeichen (=Array-Elemente) vertauschen willst, kann man das auch mit einem einfachen Dreieckstausch tun.

String-Verarbeitung gehört allerdings zu den Grundlagen, die wir voraussetzen. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore

Thema geschlossen