# String aufteilen und in Variablen speichern.



## BobAmin (25. Okt 2010)

Hallo zusammen,

Ich will einen langen String in Substrings zu jeweils 45 Zeichen aufteilen und die Substrings in ein Array bzw. Variablen, die ich dann im Laufe des Programms verwenden will, speichern.

Mit folgendem Code, habe ich schon angefangen, aber es ist lange nicht das was ich dynamisch errreichen will... 

```
<%
        String s1 = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.";

     
        String countStr1;
        String countStr2;
        String countStr3;
        String countStr4;

        //out.println("\"" + s1 + "\"" + " is " + s1.length() + " characters long.");
        
        if(s1.length()<= 285){
           countStr1 = s1.substring(0, 45);

           out.println("<b>Das ist das erste String: </b>" + countStr1 + "<br><br>");

           out.println("<b>Das ist takeIt: </b>" + takeIt + "<br><br>");

           countStr2 = s1.substring(countStr1.length(), 90);
           out.println("<b>Das ist der zweite String!!: </b>" + countStr2 + "<br><br>");

           countStr3 = s1.substring(91, 135);
           out.println("<b>Das ist das erste String: </b>" + countStr3 + "<br><br>");
           countStr4 = s1.substring(136, 180);
           out.println("<b>Das ist der zweite String: </b>" + countStr4 + "<br><br>");
        }
        
        
     %>
```

Kann mir bitte einer helfen.

Vielen Dank und Gruß
BobAmin


----------



## Final_Striker (25. Okt 2010)

Lege die Strings doch einfach in einer Liste ab.


----------



## XHelp (25. Okt 2010)

```
String str = "abcdefghijklmnop";
String[] pieces;
final int SUBSTR_LENGTH = 3;
int stepCount = (str.length() % SUBSTR_LENGTH == 0) ? (str.length() / SUBSTR_LENGTH)
		: (str.length() / SUBSTR_LENGTH + 1);
pieces = new String[stepCount];
for (int i = 0; i < stepCount; i++) {
	pieces[i] = str.substring(i * SUBSTR_LENGTH, i * SUBSTR_LENGTH
			+ SUBSTR_LENGTH > str.length() ? str.length() : i
			* SUBSTR_LENGTH + SUBSTR_LENGTH);
}

for (int i = 0; i < pieces.length; i++) {
	System.out.println(pieces[i]);
}
```

Ist aber nur eine der Möglichkeiten. Und ggf doch eine Liste verwenden, statt dem Array.


----------



## BobAmin (25. Okt 2010)

Danke schon mal, aber ich verstehe nicht ganz.

Das Ganze sollte dynamisch erstellt werden, da ich dann im Laufe des Programms nicht weiß, was wieviele Characters der Sring enthslten wird etc.

Daher diese Vorgehensweise, die ich schon mal in JavaScript erstellt habe, aber Java ist nicht mein Schwerpunkt u. ich wusste nicht, wie ich es realisieren kann.

Danke und gruß
BobAmin


----------



## XHelp (25. Okt 2010)

Was er auf meine Lösung bezogen?


----------



## BobAmin (25. Okt 2010)

Super vielen Dank...funkt. Sehr große Hilfe,



> Ist aber nur eine der Möglichkeiten. Und ggf doch eine Liste verwenden, statt dem Array.



aber um ehrlich zu sien, verstehe ich nicht ganz, was Du/ihr mit ner liste meinst/meint.

Ein Tipp vielleicht.

Grüße
BobAmin


----------



## XHelp (25. Okt 2010)

Naja, nicht String-Array verwenden, sondern eine Liste, z.B. ArrayList<String>


----------



## BobAmin (25. Okt 2010)

> Was er auf meine Lösung bezogen?



Nein... Deine Lösung ist gut und funkt. 1A.

Danke


----------



## BobAmin (25. Okt 2010)

> Naja, nicht String-Array verwenden, sondern eine Liste, z.B. ArrayList<String>



sorry, java ist nicht meine Stärke. soll die Liste innerhalb der For-Schleife erstellet werden?

sowas z.B. (nur Beispiel)


```
ArrayList<String> pieces = new ArrayList<String>();
        pieces.add("aaaaa");
        pieces.add("bbbbb");
        pieces.add("ccccc");
        pieces.add("ddddd");
        pieces.add("eeeee");
```

Grüße


----------



## XHelp (25. Okt 2010)

Naja, das Beispiel stimmt schon, aber das erstellen der ArrayList musst du noch vor der Schleife machen (genau wie das String-Array im Moment).


----------



## BobAmin (25. Okt 2010)

> (genau wie das String-Array im Moment).



Error:
incompatible types
  required: java.util.ArrayList<java.lang.String>
  found:    java.lang.String[]

habe bestimmt was falsch gemacht :bahnhof: und ich muss das hier noch importieren:

```
import java.util.ArrayList;
```


----------



## XHelp (26. Okt 2010)

Vermutlich hast du vergessen die Zeile 6 zu löschen.


----------



## BobAmin (26. Okt 2010)

gelöscht nicht... nur auskommentiert. und jetzt das hier:


```
pieces is already defined in mergedScriptlets(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,javax.servlet.http.HttpSession,javax.servlet.ServletContext,javax.servlet.jsp.JspWriter,javax.servlet.ServletConfig,javax.servlet.jsp.JspContext,java.lang.Object,javax.servlet.jsp.PageContext,java.lang.Throwable)
```


----------



## XHelp (26. Okt 2010)

Zeig mal was du da machst


----------



## BobAmin (26. Okt 2010)

```
<%
                    

                    String str = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.";


                    String[] pieces;
                    final int SUBSTR_LENGTH = 45;

                    int stepCount = (str.length() % SUBSTR_LENGTH == 0) ? (str.length() / SUBSTR_LENGTH)
                            : (str.length() / SUBSTR_LENGTH + 1);

                    //pieces = new String[stepCount];

                    ArrayList<String> pieces = new ArrayList<String>();
                    
                    
                    for (int i = 0; i < stepCount; i++) {
                        pieces[i] = str.substring(i * SUBSTR_LENGTH, i * SUBSTR_LENGTH
                                + SUBSTR_LENGTH > str.length() ? str.length() : i
                                * SUBSTR_LENGTH + SUBSTR_LENGTH);
                    }

                    for (int i = 0; i < pieces.length; i++) {
                        out.println(pieces[i] + "<br><br>");
                    }

        %>
```


----------



## XHelp (26. Okt 2010)

Also Zeile 7 (in deinem Code) muss natürlich auch weg.
Und außerdem hast du den Rest des Codes überhaupt nicht auf eine Liste angepasst. Einträge musst du mit .add("bla") hinzufügen und auslesen mit .get(2)


----------



## BobAmin (26. Okt 2010)

Also, ich gebe es auf für heute  ich blick nicht mehr durch jetzt...

1000 Dank trotzdem für deine großartige Hilfe. ich check es nochmal morgen.


----------



## BobAmin (26. Okt 2010)

> Und außerdem hast du den Rest des Codes überhaupt nicht auf eine Liste angepasst. Einträge musst du mit .add("bla") hinzufügen und auslesen mit .get(2)



ich habe das hier angepasst, aber es ist wieder buggy, da ich ehrlich gesagt nicht das Prinizp von ArrayList nicht ganz kappiert habe.


```
<%
            String str = "egestas neque at dolor malesuada pellentesque. Sed sagittis nibh eu lorem porttitor mollis sed in odio. Nullam non metus. Cras metus lacus, eleifend eget venenatis at, rutrum vel risus. Nam aliquet purus at arcu laoreet elementum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam faucibus nulla justo. Aenean non erat turpis, nec luctus.";
            //String[] pieces;
            final int SUBSTR_LENGTH = 45;

            int stepCount = (str.length() % SUBSTR_LENGTH == 0) ? (str.length() / SUBSTR_LENGTH)
                    : (str.length() / SUBSTR_LENGTH + 1);

            //pieces = new String[stepCount];

            ArrayList<String> pieces = new ArrayList<String>();
           
            for (int i = 0; i < stepCount; i++) {
                /*
                pieces[i] = str.substring(i * SUBSTR_LENGTH, i * SUBSTR_LENGTH
                + SUBSTR_LENGTH > str.length() ? str.length() : i
                 * SUBSTR_LENGTH + SUBSTR_LENGTH);
                */
                pieces.add(pieces[i] = str.substring(i * SUBSTR_LENGTH, i * SUBSTR_LENGTH
                + SUBSTR_LENGTH > str.length() ? str.length() : i
                 * SUBSTR_LENGTH + SUBSTR_LENGTH));
            }
            

            for (int i = 0; i < pieces.length; i++) {
                out.println(pieces[i] + "<br><br>");
            }
        %>
[/Java]

Danke!
```


----------



## XHelp (26. Okt 2010)

pieces_ darfst du nicht mehr stehen habe. Und alles was ich sehe, ist dass du nur ein pieces.add drumgemacht hast.
Schau lieber in einem JavaBuch nach, wie das ganze Funktioniert. Wenn du es überhaupt nicht kennst und deine Kentnisse noch schlecht sind, dann lässt du es eben weg und nimmst ein Array._


----------

