# Leerzeichen in einen String einfügen.



## ford.p (31. Jan 2006)

Ich gebe ja zu das ich nicht viel Ahnung von Java habe aber ich hätte nicht damit gerechnet das es Probleme beim Hinzufügen von Leerzeichen zu einem String gibt.

String System = "ABC";
String Service = "XYZ";

String Daten = System + "       " + Service;

out.println(Daten) ergibt ABC XYZ Egal wieviele Leerzeichen zwischen den" " stehen, es wird immer nur ein Leerzeichen eingefügt.

Mein zweiter Versuch sah folgendermaßen aus:

String Daten = System;
for(int i = 0; i<14; i++)
{
Daten += " ";
};
Daten += Service;

out.println(Daten) ergibt ABC XYZ

Nun weiß ich nicht mehr weiter. Ich brauche genau 14 Leerzeichen zwischen den beiden Strings.


----------



## The_S (31. Jan 2006)

Kann nicht sein, zeige mal nen Beispielcode der auf das nötigste reduziert ist!


----------



## Guest (31. Jan 2006)

Es handelt sich dabei um eine jsp Seite, der Quellcodeabschnitt sieht so aus:



<%
if (request.getParameter("button_sent") != null && request.getParameter("button_sent").equals("yes"))
{
String User =  request.getParameter("NH");
String Pass =  request.getParameter("PH");
String System =  request.getParameter("SY");
String Service =  request.getParameter("SE");
String TagS =  request.getParameter("TTS");
String MonatS =  request.getParameter("MMS");
String JahrS =  request.getParameter("JS");
String TagE =  request.getParameter("TTE");
String MonatE =  request.getParameter("MME");
String JahrE =  request.getParameter("JE");

String Daten = System;
for(int i = 0; i<14; i++)
{
Daten += " ";
};
Daten += Service;
//int y = writedata(Daten, Pass, User);
out.println(Daten);
}
%>


----------



## ford.p (31. Jan 2006)

Wenn ich in der for Schleife anstelle von Daten += " ";    Daten += "a";  schreibe werden die 14 a's eingefügt.


----------



## The_S (31. Jan 2006)

out ist die Methode welcher Klasse? Was macht out?


----------



## byte (31. Jan 2006)

Nenn den String nicht "System", denn diese Klasse gibts schon. Dann funktioniert das auch.


```
String a = "ABC";
String b = "XYZ";

String daten = a+"  "+b; 
System.out.println(daten);
```


----------



## ford.p (31. Jan 2006)

out.println(Daten) gibt mir den erzeugten String Daten im Browser aus. Das funktioniert ja eigentlich auch und wird nur zum Testen benutzt. Ich will die Funktion writedata() nicht mit ungülltigen Datensatz aufrufen. Stimmt etwas mit out.println() nicht?


----------



## The_S (31. Jan 2006)

byto hat gesagt.:
			
		

> Nenn den String nicht "System", denn diese Klasse gibts schon. Dann funktioniert das auch.
> 
> 
> ```
> ...



Glaube nicht, dass es an daran liegt, dass der String System heißt. Auch ist out vermutlich keine Methode von System. Ich schätze eher einmal, dass out den String direkt im Browser ausgiebt und der Browser evtl. überflüssige Leerzeilen automatisch wegkürzt (oder out da was dreht).

[edit] richtig geraten  . Schau mal ob es daran liegen könnte.


----------



## Sky (31. Jan 2006)

Die Ausgabe erfolgt in HTML ? 

Dann nimm mal anstatt Leerzeichen


----------



## byte (31. Jan 2006)

Ich nehme einmal an, der Browser konvertiert das ganze in HTML und dort wird standardmäßig nur ein " " angezeigt, egal wieviele Du da einfügst. Du müsstest die Leerzeichen für die Ausgabe in nem HTML-Browser anders kodieren, nämlich mit 


```
& nbsp; (ohne Leerzeichen nach &)
```

edit: zu langsam.
edit2: wie maskiert man html sonderzeichen hier im forum?


----------



## ford.p (31. Jan 2006)

Also ich bekomme auch mit dem String System keine Fehlermeldung und der neue String Daten wird im Browser bis auf die fehlenden Leerzeichen auch richtig angezeigt. Ich hab die beiden Strings trotzdem mal in a und b umbenannt, das Ergebnis bleibt jedoch leider das gleiche. Seltsam


----------



## byte (31. Jan 2006)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Glaube nicht, dass es an daran liegt, dass der String System heißt.



Steht doch oben so. System.outs sind damit perse, sonst hätte er ja gemerkt, dass die Leerzeichen definitiv im String stehen.


----------



## byte (31. Jan 2006)

ford.p hat gesagt.:
			
		

> Also ich bekomme auch mit dem String System keine Fehlermeldung und der neue String Daten wird im Browser bis auf die fehlenden Leerzeichen auch richtig angezeigt. Ich hab die beiden Strings trotzdem mal in a und b umbenannt, das Ergebnis bleibt jedoch leider das gleiche. Seltsam



Versuchs mit:


```
for(int i = 0; i<14; i++) {
   Daten += "& nbsp;";    // Leerzeichen nach & entfernen
}
Daten += Service;
```


----------



## The_S (31. Jan 2006)

byto hat gesagt.:
			
		

> Hobbit_Im_Blutrausch hat gesagt.:
> 
> 
> 
> ...



???  ???:L  :bahnhof:

Weiß jetzt net was du meinst


----------



## Bleiglanz (31. Jan 2006)

1. Browser ignorieren mehrere Leerzeichen, schon immer

2. enweder <pre>...</pre>

3.oder 

wenn man im Forum das eingeben will, schreibt man &amp;nbsp;


----------



## ford.p (31. Jan 2006)

Sorry meine letzte Antwort  war etwas langsam. Die Ausgabe im Browser funktioniert mit  &nbsp. Da ich den String aber eigentlich nicht ausgeben sondern der Funktion writedata() übergeben möchte brauch ich das wenn ich euch richtig verstanden habe gar nicht. Für die Weiterverarbeitung in Java sind die Leerzeichen also auch schon durch String Daten = a + "        " + b; vorhanden. Danke für die schnelle Hilfe für mein hausgemachtes Problem


----------

