tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
15
ZUGRIFFE
2501
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    MScalli MScalli ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    227
    Hi Leutz.

    Wie bringe ich es hin das ich ab einer bestimmten Stelle in einen String schreibe..
    d.h.

    String str, teil1="teil1", teil2="teil2", teil3="teil3";

    nun soll teil 1 ab der 10 stelle im String stehen, teil2 ab der 20 und teil3 ab der 30
    d.h.

    str soll dann so aussehen
    str = "----------teil1-----teil2-----teil3-----"

    ** leerzeichen werdne leider nicht dargestellt.. deswegen nehme ich "-"
    Geändert von MScalli (26.05.08 um 15:23 Uhr)
     

  2. #2
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    hast du einen String, in den das ganze eingebaut werden soll oder was soll gemacht werden?

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  3. #3
    MScalli MScalli ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    227
    joop.. ich muss diesen string dann übergeben..

    sind einige textfelder die ich auslese und dann hab ich einen String in dem steht ab welcher stelle das dann stehen soll.. z.B. tf_artnr ab stelle 15 usw.
    Geändert von MScalli (26.05.08 um 15:40 Uhr)
     

  4. #4
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Ich hab zwar nicht so ganz verstanden was du machen möchtest, aber warum baust du dir den String nicht einfach zusammen?

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  5. #5
    MScalli MScalli ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    227
    also gibts keine möglichkeit zu sagen

    ab der 0ten stelle schreibe var_1
    ab der 15ten stelle schreibe var_2
    ab der 30ten stelle schreibe var_3 usw.

    so wie beim zerhacken mit substring!
     

  6. #6
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Nein, die Möglichkeit gibts leider nicht.

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  7. #7
    MScalli MScalli ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    227
    und nen formatter benutzen.. z.B. so wie beim MaskFormatter
    denn ich habe das Problem das wenn in einem Textfeld mal nichts stehtder String total anderst aussieht.
    so wollte ich es eigentlich machen!!
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
    private void saveDataset(){
        String str_art = "";
        
        str_art = tf_artnr.getText();
        str_art += tf_bez1.getText();
        str_art += tf_bez2.getText();
        str_art += tf_teileart.getText();
        str_art += tf_artgruppe.getText();
        str_art += tf_abc_schluessel.getText();
        str_art += "  ";
        str_art += tf_umrechnungsfaktor.getText();
        str_art += tf_mengeneinheit_ek.getText();
        str_art += tf_lieferantennr.getText();
        str_art += tf_wbz.getText();
        str_art += tf_stuecklisten.getText();
        str_art += tf_lager.getText();
        str_art += " ";
        str_art += "           ";
        str_art += "           ";
        str_art += tf_akt_lagerbestand.getText();
     
         
        System.out.printf(str_art);
        
        String str_skala ="";
        int zaehl_skala = 0;
        for(int i = 0; i < str_art.length(); i++){
            zaehl_skala++;
            
            if(i%10 == 0)
                zaehl_skala = 0;
            
            str_skala += String.valueOf(zaehl_skala);
        }
        System.out.println();
        System.out.println(str_skala);
    }

    die skala ist nur zum ablesen an welcher stelle die Strings stehen..

    wenn ich alles eintrage dann gehts..
    aber wenn ich jetzt mal in nem Feld nichts habe rücken alle anderen Strings um soviel stellen nach links!!
     

  8. #8
    Avatar von Matze
    Matze Matze ist offline Weltenwanderer
    Registriert seit
    Jul 2007
    Ort
    Die Welt
    Beiträge
    1.504
    Blog-Einträge
    7
    Zitat Zitat von MScalli Beitrag anzeigen
    sind einige textfelder die ich auslese und dann hab ich einen String in dem steht ab welcher stelle das dann stehen soll.. z.B. tf_artnr ab stelle 15 usw.
    Währe es nicht um einiges einfacher, wenn du einfach einen Vector oder ein Array benutzt?
     
    "... Jeder von uns ist Kunst... gezeichnet vom Leben" (Casper)

    "Sir?, we're sorrounded!"
    "Excellent, we can attack in any direction"

  9. #9
    MScalli MScalli ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    227
    das wär natürlich ne super sache.. leider darf ich nicht.

    es wird ein cobol Programm augerufen dem ich diesen String übergeben muss.
    und deswegen muss jedes TextFeld ab ner bestimmten spalte anfangen.

    wenn ich bei allen Textfeldern den MaskFormatter nehmen könnte wärs auch kein Prob..
    leider geht das auch nicht da ich zuviel abprüfen muss usw.

    also ist die einzige chance das teil irgendwie per hand zusammen zu flicken...
    nur ich weiss echt nicht wie
     

  10. #10
    Avatar von Matze
    Matze Matze ist offline Weltenwanderer
    Registriert seit
    Jul 2007
    Ort
    Die Welt
    Beiträge
    1.504
    Blog-Einträge
    7
    Nimm halt dennoch einen Vector und speicher dort nacheinander alle Texte rein. Anschließend erstellst du einen neuen String und fügst den ersten Text ein. Dann überprüfst du, wie viele Zeichen noch bis zur nächsten Grenze fehlen und füllst entsprechend viele Leerzeichen. Dann den nächsten String ...

    Klar soweit?
     
    "... Jeder von uns ist Kunst... gezeichnet vom Leben" (Casper)

    "Sir?, we're sorrounded!"
    "Excellent, we can attack in any direction"

  11. #11
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Ihr immer mit eurem Vektor... eine ArrayList ist wirklich 8-10 mal schneller.

    Mach dir halt eine Methode die einen String bekommt und diesen bis zu einer bestimmten Stelle mit Leerzeichen auffüllt. Dann kannst du den Rest konkatenieren.

    Also aus:
    Hallo, 10
    würde dann
    Hallo__________
    (_ stehen hier mal für Leerzeichen).

    Dann weißt du genau das alles die richtige Länge hat und kannst es aneinander hängen.

    Andernfalls müßte es wohl auch mit einem StringBuilder und einem insert gehen.
     

  12. #12
    MScalli MScalli ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    227
    joop.. die einzige lösung ist es zeichenweise alles zu füllen..
    die Strings sind dank MaskFormatter schon ok.. und für die Zahlenfelder hab ichs so gelöst
    (nachkommastellen müssen immer stimmen und vorangehende leezeichen müssen Nullen sein.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
            // ist es eine ganze Zahl oder sind Nachkommastellen vorhanden 
            if(str_nachkomma.equals("00")){
                for(int i = tf.getText().length(); i < Integer.parseInt(str_laenge); i++){
                    str_return = "0" + str_return; 
                }
                return str_return;
            }else{
                // hier sind Nachkommastellen vorhanden UND es steht nichts drin
                if(tf.getText().length() == 0){
                    for(int i = 0; i < Integer.parseInt(str_laenge) - Integer.parseInt(str_nachkomma) - 1; i++){
                        str_return += "0"; 
                    }
                    str_return += ",";
                    for(int i = 0; i < Integer.parseInt(str_nachkomma); i++){
                        str_return += "0"; 
                    }
                    return str_return;
                }else{
                    // Hier steht schon was drin. D.h. nachkommastellen passen schon. Es müssen nur die 0en vorangestellt werden
                    for(int i = tf.getText().length(); i < Integer.parseInt(str_laenge); i++){
                        str_return = "0" + str_return; 
                    }
                    return str_return;
                }   
            }

    thx leutz
     

  13. #13
    Anime-Otaku Anime-Otaku ist offline Mitglied Brillant
    Registriert seit
    Aug 2005
    Ort
    Karlsruhe (Baden-Württemberg)
    Beiträge
    905
    Wenn wir es schon von Performance haben....benutze lieber einen Stringbuffer (thread-sicher) oder einen Stringbuilder (nicht thread-safe). Da bei einem normalen String beim hinzufügen immer ein neuer String erstellt wird und das einfach nur verdammt langsam ist.
    (mit append anhängen und mit insert etwas einfügen)


    Am Ende kannste dann mit einem toString den String dir holen.
    Geändert von Anime-Otaku (27.05.08 um 11:00 Uhr)
     
    Wäre super wenn ihr euren Code in dieser Form einfügt:
    Code java:
    1
    
    System.out.println("Hello World");
    [java]System.out.println("Hello World");[/java]
    Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
    Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
    Blog: http://javaeffective.wordpress.com/

  14. #14
    NoComment NoComment ist offline Grünschnabel
    Registriert seit
    May 2008
    Ort
    Hamburg
    Beiträge
    2
    Moin,

    ich würde Euch dringend raten anstatt Strings einfach hintereinander zu kleben besser eine Instanz von StringBuilder oder StringBuffer (abhängig von der verwendeten Java Version) zu verwenden. Dies hat die Vorteile:
    a) schneller, da nicht ständig neue Instanzen erzeugt werden müssen (Java nutzt intern beim verketten ebenfalls diese Klasse, muss die Instanzen aber logischerweise jedesmal wieder wegwerfen)
    b) nicht so speicherhungrig

    Ansonsten preferiere ich auch eine Methode, nach der art:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    public StringBuilder concatinate (StringBuilder sb, CharSequence val, char fillChar, int fillLength) {
       int startlength = sb.length();
     
      sb.append(val);
      while (sb.length() < startlength + fillLength) {
        sb.append(fillChar);
      }
      //gegebenenfalls die Länge des Strings beschneiden (Wenn zu lang)
      sb.setLength(startlength + fillLength);
     
      return sb;
    }

    ACHTUNG: der code ist nicht getestet (nur mal schnell so ningeschrieben), daher denke ich werden da compilefehler enthalten sein, die sollten aber mit Hilfe des Compilers schnell auffindbar sein...

    Gruß

    NoComment
     

  15. #15
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Zu dem Thema Stringkontatenation und "Optimierungen":
    http://java.sun.com/developer/techni...kabutz_qa.html

    Es kommt schon drauf an ob der Compiler die Konkatenationen optimieren kann oder nicht.. Allgemein zu sagen es wäre schneller ist allerdings problematisch

    Genauso wie ich weiter for-each verwenden werde auch wenn es langsamer ist als Indizierte Iteration... aber das nur am Rande.
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 30.09.09, 23:10
  2. Char von bestimmter Stelle im String suchen
    Von sra im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 16.01.08, 10:57
  3. Maus an bestimmter Stelle
    Von illetuffi im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 04.05.05, 12:57
  4. jpg an bestimmter stelle einfügen?
    Von vaporizer im Forum HTML & XHTML
    Antworten: 2
    Letzter Beitrag: 24.03.04, 18:37
  5. Antworten: 2
    Letzter Beitrag: 19.06.02, 18:36