Stringmanipulation

Status
Nicht offen für weitere Antworten.

smau

Mitglied
Hallo zusammen,

ich habe ein Problem mit der Methode split von String.

Der String sieht so aus: 12.34.56-56-78

Und zwar splitte ich erst einen String nach "-". Also steht in inhalt[0] 12.34.56, inhalt[1] 56 und in inhalt[2] 78
Ich möchte jetzt aber auf die Werte aus inhalt[0] einzelt zugreifen. Deswegen habe ich split nochmal mit "." benutzt, doch das geht nicht, denn der splittet das dann alles danach und nicht nur die Werte aus inhalt[0].

Wär nett, wenn ihr mir da helfen könntet!
 
Zuletzt bearbeitet:

ph0e

Mitglied
keine Ahnung ob es dir hilft ;) aber du splittest nach "," und bei deinem Beispiel sind "." drin

Edit: Hm, ok, ich bin zu langsam mit dem Tippen, siehe Vorposter^^
 

smau

Mitglied
Und worauf rufst du split(".") auf?
String[] inhalt = zeile.split("-");

Dasfunktioniert auch, wenn ich nur nach "-" splitte, dann geht das auch nur halt nicht, wenn ich nochmal nach "." splitte.

Wenn ich nur nach "-" splitte, dann steht in dem inhalt[2] = 56-56-78 drin und dort will ich halt nur auf die 56 zugreifen und der Rest kann weg.
 
Zuletzt bearbeitet:

Ark

Top Contributor
Wie wäre es damit?
Java:
whatever.split("[-.]");
Ungetestet. ^^

Ark
 

smau

Mitglied
Du musst nach "\\." splitten und das auf inhalt[0] aufrufen.
Das geht auch ohne \\. Das Problem ist das ich zweimal hintereinander splitten muss.

Der Inhalt aus inhalt[0] und inalt[1] ist ja korrekt. Hab mir überlegt jetzt auf inhalt[2] nochmal split nach "." anzuwenden. Nur das funktioniert leider nicht, denn dann splittet der das komplette nach ".".
 

Der Müde Joe

Top Contributor
>Ich möchte jetzt aber auf die Werte aus inhalt[0] einzelt zugreifen.

ok

>Der Inhalt aus inhalt[0] und inalt[1] ist ja korrekt.

hmm?

>Hab mir überlegt jetzt auf inhalt[2] nochmal split nach "."

Also mächtest du die einzelnen Ziffern der letzen Zahl? Oder was den nun.
 

tfa

Top Contributor
Das geht auch ohne \\. Das Problem ist das ich zweimal hintereinander splitten muss.

Der Inhalt aus inhalt[0] und inalt[1] ist ja korrekt. Hab mir überlegt jetzt auf inhalt[2] nochmal split nach "." anzuwenden. Nur das funktioniert leider nicht, denn dann splittet der das komplette nach ".".

Schreib mal ein kleines Testprogramm, das dieses Verhalten zeigt und poste es hier.
 

smau

Mitglied
Java:
for (int i = 1; i <= zeilen; i++) {
            String[] inhalt = zeile.split(".");
            System.out.println(inhalt[2]);
            zeile = datei.readLine();
        }
Dieses Programm funktioniert, doch steht in inhalt[2] 56-56-78 und dort soll nur die erste 56 stehen. Also der erste Wert vor dem "-".
 
B

bygones

Gast
Java:
for (int i = 1; i <= zeilen; i++) {
            String[] inhalt = zeile.split(".");
            System.out.println(inhalt[2]);
            zeile = datei.readLine();
        }
Dieses Programm funktioniert, doch steht in inhalt[2] 56-56-78 und dort soll nur die erste 56 stehen. Also der erste Wert vor dem "-".
das glaub ich ehrlich gesagt nicht
Java:
    public static void main(String[] args) {
        String zeile = "12.34.56-56-78";
        String[] inhalt = zeile.split(".");
        System.out.println(inhalt[2]);
    }
gibt eine ArrayIndexOutOfBoundsException... nur mit split("\\,") geht das

dann geht auch [c]System.out.println(inhalt[2].split("-")[0]);[/c]
 

smau

Mitglied
Doch, also das geht bei mir so und der gibt das auch richtig aus, nur dass halt in inhalt[2] 56-56-78 steht wie gesagt.

inhalt ist über der for-Schleife noch deklariert.
 
Zuletzt bearbeitet:

tfa

Top Contributor
Java:
for (int i = 1; i <= zeilen; i++) {
            String[] inhalt = zeile.split(".");
            System.out.println(inhalt[2]);
            zeile = datei.readLine();
        }
Dieses Programm funktioniert, doch steht in inhalt[2] 56-56-78 und dort soll nur die erste 56 stehen. Also der erste Wert vor dem "-".

Das sind irgendwelche zusammenhanglose Codezeilen, kein Testprogramm.
Sieh dir das an, was bygones geschrieben hat und probier es aus. Notfalls im Debugger.
 

Der Müde Joe

Top Contributor
>Das sind irgendwelche zusammenhanglose Codezeilen,

.. welche durch das split mit . und inhalt[2] auf jeden Fall in eine AIOOBE enden, da split mit . (Any char) immer die length 0 geben wird
 

smau

Mitglied
Genauso wie das Programm von bygones ist meins doch auch! Und nachdem das nach "." gesplittet ist möchte ich das noch nach "-" splitten!
 

Michael...

Top Contributor
Ich würde sagen Du machst vor der Schleife kein split("-") bzw. in zeile steht sowas wie "12.34.56-56-78"
Java:
String s = "12.34.56-56-78";
String[] firstSplit = s.split("-");
for (int i=0; i<firstSplit.length; i++) {
	String[] secondSplit = firstSplit[i].split("\\.");
	System.out.println(java.util.Arrays.toString(secondSplit));
}
 

Der Müde Joe

Top Contributor
>Und nachdem das nach "." gesplittet ist

Ums mal auf den Punkt (zweideutig) zu bringen.

Der Punkt ist ein Spezalcharakter, welche für any char steht. siehe Pattern.
Willst du nach any char splitten, wird nicht gesplittet.
Willst du anch Punkt spiltten, musst du den spezalchar escapen mit \.
Nun ist \ aber wieder ein Spezialchar. Den musst du auch noch escapen.
-->
\\.

und dann nochmals nach - (der ist kein Spezialcharakter)
 

smau

Mitglied
Ich würde sagen Du machst vor der Schleife kein split("-") bzw. in zeile steht sowas wie "12.34.56-56-78"
Java:
String s = "12.34.56-56-78";
String[] firstSplit = s.split("-");
for (int i=0; i<firstSplit.length; i++) {
	String[] secondSplit = firstSplit[i].split("\\.");
	System.out.println(java.util.Arrays.toString(secondSplit));
}
Ah ok, dass probier ich dann mal aus, das erste split davor zu machen und innerhalb der Schleife dann das zweite split zu machen. Jedoch möchte ich auch die 12 und die 34 durch die Schleife laufen lassen, denn ich lese aus einer Datei mehrere Zeilen aus.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben