Hallo allerseits..
ich habe ein textfeld, das maximal 1020 zeichen beinhalten darf. der inhalt wird per db-prozedur in die sybase-datenbank geschrieben (eine nostalgische version).
da diese alte sybase-version keine grossen strings kann, muss ich diesen bis 1020 zeichen grossen string in vier gleiche teile schneiden.
zum testen habe ich mir einfach einen string "aaaaaa....." gemacht, der genau 1020 zeichen lang ist.
dieser wird auch wunderprächtig (vielleicht nicht optimal prograammiert) in vier teile zerschnipselt.
mein eigentliches problem ist jedoch, dass nicht der volle string einbezogen wird.
ein
System.out.println(string.length());
gibt mir die länge 1016 aus, obwohl der String (ich habs mehrere male überprüft) 1020 zeichen lang ist.
ich komm beim besten willen nicht auf die erklärung dieses phänomens. werden da noch sonstige werde gespeichert im string, die dann genau die übrigen vier plätze ausfüllen? wenn das so wäre, wie könnte ich dem string sagen, dass er gefälligst alle zeichen speichern soll?
ich bedanke mich für allfällige hilfestellungen.
hier noch der code, falls das was hilft. können auch programmier-kosmetische einwände gemacht werden. bin blutiger anfänger, der urplötzlich ohne vorkurs in das java-projekt eingebunden wurde (vor ein paar monaten). vorher hatte ich noch keine praktische programmiererfahrung. daher fehlt mir einiges an grundlagen.
ich habe ein textfeld, das maximal 1020 zeichen beinhalten darf. der inhalt wird per db-prozedur in die sybase-datenbank geschrieben (eine nostalgische version).
da diese alte sybase-version keine grossen strings kann, muss ich diesen bis 1020 zeichen grossen string in vier gleiche teile schneiden.
zum testen habe ich mir einfach einen string "aaaaaa....." gemacht, der genau 1020 zeichen lang ist.
dieser wird auch wunderprächtig (vielleicht nicht optimal prograammiert) in vier teile zerschnipselt.
mein eigentliches problem ist jedoch, dass nicht der volle string einbezogen wird.
ein
System.out.println(string.length());
gibt mir die länge 1016 aus, obwohl der String (ich habs mehrere male überprüft) 1020 zeichen lang ist.
ich komm beim besten willen nicht auf die erklärung dieses phänomens. werden da noch sonstige werde gespeichert im string, die dann genau die übrigen vier plätze ausfüllen? wenn das so wäre, wie könnte ich dem string sagen, dass er gefälligst alle zeichen speichern soll?
ich bedanke mich für allfällige hilfestellungen.
hier noch der code, falls das was hilft. können auch programmier-kosmetische einwände gemacht werden. bin blutiger anfänger, der urplötzlich ohne vorkurs in das java-projekt eingebunden wurde (vor ein paar monaten). vorher hatte ich noch keine praktische programmiererfahrung. daher fehlt mir einiges an grundlagen.
Code:
String tmp = "aaaaaaaaa.........." man stelle sich den 1020 langen string vor
String text1 = null;
String text2 = null;
String text3 = null;
String text4 = null;
System.out.println(tmp.length());
int len = tmp.length();
if (isEmpty(tmp)) {
// do nothing, go further with null-params
} else {
int startVal = 0;
int maxPerField = 255;
if (len <= maxPerField) {
text1 = tmp.substring(startVal,len);
}
if (len > maxPerField && len <= 2*maxPerField) {
text1 = tmp.substring(startVal, startVal+maxPerField);
int start = startVal+maxPerField;
text2 = tmp.substring(start, len);
}
if (len > 2*maxPerField && len <= 3*maxPerField) {
text1 = tmp.substring(startVal, startVal+maxPerField);
int start1 = startVal+maxPerField;
text2 = tmp.substring(start1, start1+maxPerField);
int start2 = start1+maxPerField;
text3 = tmp.substring(start2, len);
}
if (len > 3*maxPerField && len <= 4*maxPerField) {
text1 = tmp.substring(startVal, startVal+maxPerField);
int start1 = startVal+maxPerField;
text2 = tmp.substring(start1, start1+maxPerField);
int start2 = start1+maxPerField;
text3 = tmp.substring(start2, start2+maxPerField);
int start3 = start2+maxPerField;
text4 = tmp.substring(start3, len);
}
System.out.println(text1+" "+text1.length());
System.out.println(text2+" "+text2.length());
System.out.println(text3+" "+text3.length());
System.out.println(text4+" "+text4.length());
}