2017-03-10 5 views
0
anzeigen

Ich versuche, zwei Zeichenketten-Muster nebeneinander in C# anzuzeigen.Wie man Zeichenketten-Muster nebeneinander in C#

Vielleicht eine Art und Weise gibt es, dass u das von ASCII tun können Code, aber, wie das funktioniert e

weiß, dass ich ein paar Möglichkeiten, es zu tun, und ich habe alle ausprobiert, aber es sich überlappen andere, seine bcs String Struktur unregelmäßig, ist dies ein „Blume“, die ich habe:

..O.. 
O.o.O 
..O.. 

ich die Console.WriteLine() Methode versucht haben, druckt es sie nach unten in einer Spalte.

Und andere, schauen Sie sich mein Code:

Console.OutputEncoding = Encoding.ASCII; //maybe this can be done in ASCII too. 
    int r = Convert.ToInt32(Console.ReadLine()); // the flowers row 
    int c = Convert.ToInt32(Console.ReadLine()); //the flowers col 
    string flower = @"..O.. 
         O.o.O 
         ..O.."; 

    string s1 = string.Concat(Enumerable.Repeat(flower + "\n", r)); //i multiply this string with the coefficent "r" 

    string final = string.Concat(Enumerable.Repeat(s1, c)); //i tried to concat the first one with that got generated and in this way i wanted to get flower in col and rows , like matrixes u know 

    string s2 = string.Concat(s1); //tried to concat them , this works for simple strings but not for my kind of string 

i etw wie diese erhalten möchten, r = 2, c = 5 der Druck wäre:

..O....O....O....O....O.. 
O.o.OO.o.OO.o.OO.o.OO.o.O 
..O....O....O....O....O.. 
..O....O....O....O....O.. 
O.o.OO.o.OO.o.OO.o.OO.o.O 
..O....O....O....O....O.. 

Aber anstatt mit diesen Methoden zu überlappen oder nur drucken sie in einem col und 'r' Reihen, habe ich Probleme mit der Spalte Teil, um sie nebeneinander anzuzeigen.

Kann mir jemand helfen?

Ich würde es schätzen!

Antwort

1

durch das Muster Environment.NewLine mit teilen, kann generisch genug so etwas wie dieses wiederverwendet zu werden:

public static string RepeatPattern(string pattern, int rows, int columns) 
{ 
    var patternSplitByLine = pattern.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); 

    var oneColumnOutput = new List<string>(); 
    for (int i = 0, j = patternSplitByLine.Length; i<j; i++) 
     oneColumnOutput.Add(string.Concat(Enumerable.Repeat(patternSplitByLine[i], columns))); 

    var patternOneRowJoined = String.Join(Environment.NewLine, oneColumnOutput); 
    var allRows = Enumerable.Repeat(patternOneRowJoined, rows); 

    return String.Join(Environment.NewLine, allRows); 
} 
+0

Vielen Dank, es funktioniert wie ein Charme – gocci

-1

Wow, das sind einige ziemlich Low-Level-Zeug. Sehen Sie das nicht sehr oft.

Hier ist was ich vorschlagen würde.

  1. Define eine zweidimensionale Anordnung von char geeigneter Größe für das Anzeigegerät (wahrscheinlich 80 Spalten x 43 Zeilen, wenn ich mich richtig erinnere)

  2. Statt Blumen zu drucken, so dass sie in der Anordnung zeichnen

  3. Wenn alle Ihre Blumen fertig sind, konvertieren Sie die Arrays in Strings und geben Sie diese aus.

+0

dies eine gute Idee sein kann, ich es versuchen! Vielen Dank für Ihre Antwort – gocci

+0

Bitte erläutern Sie den Downvote. –

+0

ich nicht, ich kann noch nicht wählen – gocci

Verwandte Themen