# Leerstring bzw String mit x Zeichen erzeugen?



## eclipseBeginner (11. Mrz 2010)

Hallo,

gibt es eine "fertige" Funktion um einen Zufallsstring mit x Zeichen zu erzeugen, wobei x eine beliebige Zahel, wie z.B. 50 ist.

Ich weiß ich könnte das mit nem StringBuilder und ner Schleife machen aber ich dachte es gibt vielleicht sowas wie 


```
String zufall = new String(50,'x')
```

Es würde auch reichen einen Leerstring mit x Zeichen zuerreugen, in dem ich mit replace ja meine Zeichen einsetzen kann.

Gibts da ne einfache "Ein-zeilen-Möglichkeit" oder muss ich dafür erst ne Funkton schreiben, da ich das bestimmt öfter benötige?


----------



## Tomate_Salat (11. Mrz 2010)

^^ da kommt jmd aus dem c++-Bereich 

würde mich abera uch mal interessieren. Sollte mir das eine solche Methode auffallen, post ich sie hier


----------



## Gast2 (11. Mrz 2010)

Gibt es in den Apache Common Lang Lib, sonst wüsste ich das nicht.

RandomStringUtils (Commons Lang 2.5 API)


----------



## faetzminator (11. Mrz 2010)

Der Anwendungsfall wär hier interessant.


----------



## function (11. Mrz 2010)

Naja man könnte auch einen StringBuilder verwenden...

```
StringBuilder sB = new StringBuilder();
sB.setLength(30);
sB.setCharAt(0, 'a');
System.out.println(sB.toString());
```
so entsteht ein String mit 30 elementen, wobei wenn setLenght benutzt wird mit null('\u0000') aufgefüllt...


----------



## Tomate_Salat (11. Mrz 2010)

faetzminator hat gesagt.:


> Der Anwendungsfall wär hier interessant.



Nun ja auf Consolenebene ist das durchaus nicht verkehrt.


----------



## Firestorm87 (11. Mrz 2010)

Zum Thema "underlining" hab Ich da neulich auch schon einmal eine Lösung gesucht.
In dem Fall hab Ich allerdings den alten String kopiert und einfach alles ersetzt....

Einen neuen String ohne Vorlage mit einer Länge x anlegen ist zumindest mit standard-mitteln afaik nicht machbar... (zumindest ohne eine coole for-schleife und tolles anhängen )


```
StringBuilder sB = new StringBuilder();
sB.setLength(30);
sB.setCharAt(0, 'a');
```
scheint zumindest nicht zu funktionieren, da er eben nicht alles durch "a" ersetzt soweit Ich weiß....

/EDIT: hat mal jmd sowas probiert?:

```
StringBuilder sB = new StringBuilder();
sB.setLength(30);
String s = sB.toString().replaceAll(".", "x");
```


----------



## function (11. Mrz 2010)

eclipseBeginner hat gesagt.:


> Es würde auch reichen einen Leerstring mit x Zeichen zuerreugen, in dem ich mit replace ja meine Zeichen einsetzen kann.


und sowas wäre mit nem StringBuilder möglich, was besseres ist mir jedenfalls auf anhieb nicht eingefallen 


[edit]


Firestorm87 hat gesagt.:


> ```
> StringBuilder sB = new StringBuilder();
> sB.setLength(30);
> String s = sB.toString().replaceAll(".", "x");
> ```


ja das funktioniert, aber um sicher zugehen vll doch,

```
sB.toString().replaceAll("\u0000", "x");
```


----------



## Tomate_Salat (11. Mrz 2010)

function hat gesagt.:


> ja das funktioniert, aber um sicher zugehen vll doch,
> 
> ```
> sB.toString().replaceAll("\u0000", "x");
> ```



was soll an 

```
replaceAll(".", "x");
```
unsicher sein? [c].[/c] steht meines wissens nach für iein Zeichen/also für alles und jedes zeichen wird somit durch ein [c]x[/c] ersetzt


----------



## bygones (11. Mrz 2010)

```
char[] a = new char[10];
Arrays.fill(a, 'x');
System.out.println(new String(a));
```
oder
[groovy]
println 'x' * 10
[/groovy]


----------



## function (11. Mrz 2010)

Tomate_Salat hat gesagt.:


> unsicher sein? [c].[/c] steht meines wissens nach für iein Zeichen/also für alles und jedes zeichen wird somit durch ein [c]x[/c] ersetzt


unsicher nichts, aber es könnte ja evtl passieren, dass man schon vorher ein zeichen ersetzt, also im StringBuilder und nicht will, dass dieses auch ersetzt wird.


----------



## eclipseBeginner (11. Mrz 2010)

Hallo,

danke für die vielen Antworten, habe mich letztendlich für die Variante von bygones entschieden.


----------



## Tomate_Salat (11. Mrz 2010)

function hat gesagt.:


> unsicher nichts, aber es könnte ja evtl passieren, dass man schon vorher ein zeichen ersetzt, also im StringBuilder und nicht will, dass dieses auch ersetzt wird.



Ja ok, klar, ich ging aber von dem Anwendungsbeispiel: "Unterstreichen in der Konsole" aus. Und da hat man normalerweise nur ein Zeichen. Klar ist diese Methode nicht zu empfehlen, wenn man Zeichen beibehalten will 



eclipseBeginner hat gesagt.:


> habe mich letztendlich für die Variante von bygones entschieden.



Würde ich auch. Ist die kürzeste und tut was sie soll.


----------



## bygones (11. Mrz 2010)

eclipseBeginner hat gesagt.:


> danke für die vielen Antworten, habe mich letztendlich für die Variante von bygones entschieden.


klar dass die 2. Groovy ist und nicht unter plain old java laeuft ? wenn die erste genommen hast ists problemfrei ;-)


----------

