Laden...

in einer for-schleife soll das letzte Komma entfernt werden

Erstellt von uwi vor 12 Jahren Letzter Beitrag vor 12 Jahren 3.181 Views
U
uwi Themenstarter:in
2 Beiträge seit 2011
vor 12 Jahren
in einer for-schleife soll das letzte Komma entfernt werden

Hallo und guten Tag,
ich bin ganz neu hier und finde es richtig gut das es solche Leute und Foren überhaupt gibt.
Mein eigentliches Problem besteht darin, das in einer for-schleife vor der ersten und nach der letzten Zahl kein Komma stehen soll.

if (i ≥ 0 && i != 10)
Console.Write( i+",");

Irgendwo habe ich einen Denkfehler. Mir fehlt wohl der Tritt.

Danke an alle Mitdenker.

Gelöschter Account
vor 12 Jahren

Mir fallen da einige Möglichkeiten ein.
Hier mal die Sparvariante,

// schleife von 0 bis 9
int lower = 0;
int upper = 9;
for(int i=lower ;i<=upper;i++)
{
  string message = i.ToString();
  if(i<upper)
    message+=",";
}
I
50 Beiträge seit 2010
vor 12 Jahren

Eine einfache aber ehr unschöne Lösung ist einfach ne if-Abfrage in die Schleife einzubauen und abzufragen ob es sich um den letzten durchlauf der Schleife handelt wenn ja dann einfach Console.Write(i);

Oder du speichert Zahlen erst in einen string und schneidest vor der Augabe per String.Remove das letzte Zeichen also das Komma ab.

int max = 10;
string temp = "";
for(int i = 0; i < max; i++)
{
	temp = temp + i.ToString() + ",";	
}

temp = temp.Remove(temp.length - 1);
Console.Write(temp);
G
538 Beiträge seit 2008
vor 12 Jahren

Kannst zum Beispiel das hier machen:


for(int i = 0; i < 10; i++) {
  Console.Write((i != 0)?"":", " + i.ToString());
}

Abgesehen davon gibt es glaube ich Array.Join() als Funktion, die sowas erfüllen kann.

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

S
417 Beiträge seit 2008
vor 12 Jahren
var joined = string.Join(", ", Enumerable.Range(0, 10));
2.891 Beiträge seit 2004
vor 12 Jahren

Oder du speichert Zahlen erst in einen string und schneidest vor der Augabe per String.Remove das letzte Zeichen also das Komma ab.

Besser die String.TrimEnd-Methode (System) benutzen. Also temp = temp.TrimEnd(',');

1.820 Beiträge seit 2005
vor 12 Jahren

Hallo!

Dann hab' ich auch noch eine Variante:


var result = String.Empty;
for (int i=0; i<10; i++){
    if (!String.IsNullOrEmpty(result)) result+=", ";
    result+=i.ToString();
}
Console.WriteLine(result);

Nobody is perfect. I'm sad, i'm not nobody 🙁

U
uwi Themenstarter:in
2 Beiträge seit 2011
vor 12 Jahren
for-schleife

Danke liebe Leute,
das hat erstmal weitergeholfen. Werde euch weiterempfehlen.

Hinweis von herbivore vor 12 Jahren

Werde euch weiterempfehlen.

Das ist grundsätzlich nett, jedoch solltest du und alle deine "Follower" dann [Hinweis] Wie poste ich richtig? Punkt 1.1.1 beachten. Vielen Dank!

5.742 Beiträge seit 2007
vor 12 Jahren
var joined = string.Join(", ", Enumerable.Range(0, 10));  

Die Variante möchte ich nochmals hervorheben: Seit .NET 4.0 kann man dieser Methode nämlich auch ein IEnumerable<T> übergeben statt wie zuvor nur ein string[], was sie für derartige Verkettungen optimal macht.