Ich habe, entsprechend meiner oben geschilderten Idee, mal ein schnelles Programm zusammengehackt, damit deutlich wird,
was ich mir eigentlich vorgestellt habe.
Ich vermute, es gibt da viel eleganteren und schnelleren Code. Ich hoffe, ich habe mich mit meinem Versuch hier nicht lächerlich gemacht... Bitte, lasst es mich wissen!
Ich bin, wie gesagt, ganz neu in der Welt des C# und noch auf der Suche! ;-)
Die geschweiften Klammern sind eigentlich vollkommen unnötig und verkomplizieren die Sache im Grunde nur. Ich habe sie dennoch als Marker beibehalten, damit meine Methode analog zum klassischen WriteLine-Aufruf funktioniert.
Mein Beispielprogramm:
|
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
54
55
56
57
58
59
60
|
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// Als erstes ein Beispiel mit zwei übergebenen Variablen.
string text = "Der erste Wert: {0} und auch der zweite: {1}.";
int variable1 = 10;
int variable2 = 20;
Ausgabe(text, variable1, variable2);
// Und nun mit dreien.
text = "Und auch mit {0} Werten geht es prima! Der {1}. Wert und nun der {2}. Wert. SO dachte ich mir das! :-)";
variable1 = 3;
variable2 = 2;
int variable3 = 3;
Ausgabe(text, variable1, variable2, variable3);
}
public static void Ausgabe(string text, params int[] variable)
{
int cutIn;
int cutOut;
string[] substring = new string[variable.Length];
// Diese Schleife durchläuft den Text, sucht geschweifte Klammern und zerschneidet den Text entsprechend in kleine Häppchen
for (int i = 0; i < variable.Length; i++)
{
cutIn = text.IndexOf("{"); // Finde das Ende des ersten Textteiles
cutOut = text.IndexOf("}"); // und auch die darauf folgende schließende Klammer
substring[i] = text.Substring(0, cutIn); // speichert en ersten Textteil
text = text.Remove(0, cutOut + 1); // und löscht bis zum Klammerausdruck.
}
string ausgabe = "";
// Nun wird der Text wieder zussammengefügt, wobei jeweils die Variablen "dazwischengeschoben" werden.
for (int i = 0; i < variable.Length; i++)
{
ausgabe += substring[i];
ausgabe += variable[i];
}
ausgabe += text; // Hängt den übrig gebliebenen Text wieder an.
Console.SetCursorPosition(0,2);
Console.WriteLine("--------------------------");
Console.WriteLine(ausgabe);
Console.WriteLine("--------------------------");
Console.ReadLine();
Console.Clear();
}
}
}
|
______
Edit: LOL!!!
@unbird:
Vielen, vielen Dank! Das ist nun GENAU was ich meinte.... Eine kurze, elegante Zeile... anstelle meines super umständlichen Codes. *Seufz*
In der Tat, LINQ stand bisher noch nicht auf meinem Stundenplan. Kommt noch, ganz logisch!
Das Dumme an diesen Fingerübungen ist halt, dass immer wieder Probleme auftauchen, die zu lösen meine Kenntnisse einfach noch nicht reichen. Was nichts daran ändert, dass sie jucken und ich mich kratzen muss.
Vielen lieben Dank, dass Du mir dafür ein Stöckchen gegeben hast!
PROBLEM GELÖST!