PDA

View Full Version : Unnötige Leerzeischen werden übernommen



Steffi
04-12-13, 22:48
Hallo

Habe folgendes Problem. Frage über Java Daten ab. In der Datenbank (i515) ist für die Zelle eine Länge von 255 zeichen vorgesehen.
Der Inhalt der Zelle ist ca. 5-10 zeichen lang.

Mein Problem ist nun, dass ich immer ein 255 lagen String bekomme. Und zwar die 5-10 Zeichen und zusätzlich lauter leerzeichen.

Kann mir da mal wer einen Tipp geben wie ich dieses Problem lösen kann:confused:

Ich weiß leider nicht einmal wie ich dieses Problem in Google und co. suchen soll.

Danke im voraus

lg

Steffi

KM
05-12-13, 08:30
Hallo,

wie wäre es mit String.trim() ?

Gruß,
KM

Steffi
05-12-13, 08:38
Hallo,

wie wäre es mit String.trim() ?

Gruß,
KM

Hallo KM

Danke für Deine Hilfe.

Dass habe ich mir auch schon Überlegt. Aber dann nimmt er mir ja alle Lehrzeichen weg, oder? Und in den 5-10 Zeichen können ebenfalls Lehrzeichen enthalten sein, die erhalten bleichen sollen.

lg

Steffi

Steffi
05-12-13, 08:41
Hallo KM

Habe mir nochmals die trim Funktion durchgelesen. Du hast ja sowas von recht.

http://gailer-net.de/tutorials/java/Notes/chap29/ch29_14.html

Ich bin immer davon ausgegangen, dass die Datenbank mir zuviele Daten sendet.

Vielen vielen Dank

lg

Steffi

Fuerchau
05-12-13, 16:54
Allerdings entfernt diese auch die Leerzeichen am Anfang!
Hier 2 Methoden zum Enfernen am Anfang oder am Ende, falls trim() zu viel macht:

http://www.xinotes.org/notes/note/1418/

TR1
06-12-13, 08:59
oder die normale Trim Methode abgeändert:



/** Links trim */
public static String trimLeft(final String s){
return trim(s, true);
}

/** Rechts trim */
public static String trimRight(final String s){
return trim(s, false);
}

private static String trim(final String s, boolean left){
char[] value = s.toCharArray();
int len = value.length;
int st = 0;
char[] val = value;
if (left){
while ((st < len) && (val[st] <= ' ')) {
st++;
}
}else{
while ((st < len) && (val[len - 1] <= ' ')) {
len--;
}
}
return ((st > 0) || (len < value.length)) ? s.substring(st, len) : s;
}

Fuerchau
06-12-13, 09:17
Da ist die ReplaceAll-Methode wesentlich effektiver:).

BenderD
06-12-13, 09:57
@Baldur: was erst noch zu zeigen wäre, ich setze mal ein Krügerl auf die Schleife, Regenechsen sind nicht die schnellsten!

Ansonsten plädiere ich für:
http://docs.spring.io/spring/docs/3.1.x/javadoc-api/org/springframework/util/StringUtils.html#trimTrailingCharacter(java.lang.S tring, char)

das ist eine bewährte Komponente aus einem Hunderttausendfach bewährten Framework.

D*B

Steffi
21-12-13, 10:45
Hallo Ihr Lieben

Bei meinem Programm funktioniert jetzt alles einwandfrei. Hätte nur gerne gewusst wieso wer die Lehrzeichen den variablen hinzufügt. Das dürfte ja eigebltich nicht passieren, oder bin ich da zu naiv???

lg und schöne Feiertage

Steffi

Fuerchau
22-12-13, 12:24
Wenn in der Datenbank das Feld als CHAR definiert ist, enthält es immer die Leerzeichen da es eine feste Länge hat.
Nur VARCHAR speichert auch die Länge.
Dann kommt es darauf an, wie die Programme die Informationen speichern.
Denn auch Varchar kann incl. Leerzeichen gepeichert werden, automatisch wird da nichts entfernt.