String aufteilen und in Variablen speichern.

BobAmin

Mitglied
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...
Java:
<%
        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
 

XHelp

Top Contributor
Java:
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

Mitglied
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
 

BobAmin

Mitglied
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
 

BobAmin

Mitglied
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)

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

Grüße
 

XHelp

Top Contributor
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

Mitglied
(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:
Java:
import java.util.ArrayList;
 
Zuletzt bearbeitet:

BobAmin

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

Java:
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)
 

BobAmin

Mitglied
Java:
<%
                    

                    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

Top Contributor
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

Mitglied
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

Mitglied
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.:(

Java:
<%
            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

Top Contributor
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.
 

Ähnliche Java Themen

Neue Themen


Oben