# String mehrfach ausgeben



## Gästchen (7. Jan 2005)

Hallo,

ich habe folgendes Problem.
Ich fülle in einer while-Schleife einen String mit mehreren Daten. Ich benutze "send" um den String zu senden.
Als Beispiel:
	
	
	
	





```
String s = getAllUser();
send(s, toMe());
```
getAllUser() sind mehrere Usernamen. Bisher kein Problem.
Ich habe jetzt aber in einer Dateien einen Text mit einem Platzhalter für die Namen
	
	
	
	





```
Es sind ##USERCOUNT## User auf der Seite: ##USERLIST##
```
Lasse ich diesen Platzhalter in der while-Schleife ersetzen und ausgeben kommt folgendes heraus:
	
	
	
	





```
Es sind 3 User auf der Seite: User1
Es sind 3 User auf der Seite: User2
Es sind 3 User auf der Seite: User3
```
Sieht dann also so aus..
	
	
	
	





```
Enumeration enumeration = getAllUser();
while(enumeration.hasMoreElements())
{
String s1 = config.Dateiname;
send_replace(s1, "##USERCOUNT##", CountAllUser());
send_replace(s1, "##USERLIST##", ((String)enumeration.nextElement()));
send(s1, toMe());
}
```
Ich möchte aber, dass nur die Usernamen wiederholt werden. Da habe ich es so probiert:
	
	
	
	





```
Enumeration enumeration = getAllUser();
String s1 = config.Dateiname;
send_replace(s1, "##USERCOUNT##", CountAllUser());
while(enumeration.hasMoreElements())
{
send_replace(s1, "##USERLIST##", ((String)enumeration.nextElement()));
}
send(s1, toMe());
```
Aber dann zeigt er mir immer nur einen Usernamen an.
In PHP gibt es die Möglichkeit, einen String aus ausserhalb von while komplett zu nutzen.. z.B.
	
	
	
	





```
$foo = "bar";
while(...)
{
    $foobar .= $foo;
}
echo $foobar;
```
Bisschen primitiv gezeigt, aber ich hoffe man versteht mich. Also in PHP kann ich *.=* nutzen, damit der String wiederholt wird.
Wie sieht das in Java aus?
Danke für die Antworten


----------



## Icewind (7. Jan 2005)

hm meinst du Strings aneinanderhängen???

irgendwie kommt das so rüber besonders mit deinem PHP Beispiel..

also in java:


```
String foobar = "foo";
while(....)
    foobar += "bar";
System.out.println(foobar);
```


----------



## Gästchen (7. Jan 2005)

hm, aneinanderhängen.. ja ok..
Also so hab ichs probiert (+=) aber dann zeigt er alles doppelt an (Beispiel 1) 
	
	
	
	





```
Es sind 3 User auf der Seite: User1 
Es sind 3 User auf der Seite: User2 
Es sind 3 User auf der Seite: User3
```
Letztendlich sollte nur ##USERLIST## mehrfach ersetzt werden. Und es sollte so aussehen
	
	
	
	





```
Es sind 3 User auf der Seite: User1 User2 User3
```
Ist das denn möglich oder verrenn ich mich da grad?


----------



## Wiesel (7. Jan 2005)

Wenn du statt "String" auf "StringBuffer" umsteigt kannst du einfach mit der "append()" Methode deine User anhängen.


----------



## mic_checker (7. Jan 2005)

wenn es so willst, häng nur USERLIST an, am besten wie Wiesel schon gesagt hat mit StringBuffer und append() , da dies performanter ist. Ansonsten erzeugst du eine ganze Reihe von Strings die nachher nicht mehr gebraucht werden, mit StringBUffer operierst du nur auf einem...


----------



## Gästchen (7. Jan 2005)

Hm, ich hab jetzt mehrere Variationen probiert..
Momentan sieht es so aus:
	
	
	
	





```
Enumeration enumeration = getAllUser(); 
String s1 = config.Dateiname; 
send_replace(s1, "##USERCOUNT##", CountAllUser()); 
while(enumeration.hasMoreElements()) 
{ 
String s2 =  ((String)enumeration.nextElement());
StringBuffer sb = new StringBuffer();
String s3 = sb.append(s2);
send_replace(s1, "##USERLIST##", s3); 
} 
send(s1, toMe());
```
Da ist mit Sicherheit ein Fehler, aber ich weiss nich was   
Zur Erklärung: Das ist für einen Chat. Wird ein Befehl für einen Channel eingegeben, zeigt er die anwesenden User.
Sind 2 User im selben Channel und User2 fragt ab zeigt er
	
	
	
	





```
Es sind 2 User auf der Seite: User1 // Er unterschlägt User2
```
Fragt User2 aus einem anderen Channel ab, zeigt er korrekt an
	
	
	
	





```
Es sind 1 User auf der Seite: User2
```
Fragt User1 einen Channel ab, indem nur er sich befindet, wird ##USERLIST## überhaupt nicht ersetzt:
	
	
	
	





```
Es sind 1 User auf der Seite: ##USERLIST##
```
Irgendwie passts hinten und vorne nicht.


----------

