Problem mit split() und regex

verena4

Grünschnabel
Hallo

ich habe ein kleines Problem mit der split() Methode.

ich habe einen String:

BLA+ABC+++TEST:?+420 326 853 386+TEST

den möchte ich am Plus aufteilen. Aber nur bei den Pluszeichen die kein Fragezeichen davor haben.

Bei dem String oben soll dann rauskommen:

1. BLA
2. ABC
3.
4.
5. TEST:?+420 326 853 386
6. TEST

Bisher hab ichs so versucht:

str.split("[^?]\\+")

aber das funktioniert leider nicht so wie ich das will. Vielleicht kann mir jemand helfen.

Viele Grüße

Verena
 
Hallo!

Das funktioniert einwandfrei:
Java:
/**
 * 
 */
package de.tutorials;

import java.util.Arrays;

/**
 * @author Thomas.Darimont
 * 
 */
public class StringSplitExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String str = "BLA+ABC+++TEST:?+420 326 853 386+TEST";
        System.out.println(Arrays.toString(str.split("\\+")));
    }

}

Ausgabe:
Code:
[BLA, ABC, , , TEST:?, 420 326 853 386, TEST]

Gruß Tom
 
Hallo Tom,

der Split funktioniert in deinem Beispiel bestimmt einwandfrei.
Die Fragestellung habe ich aber so verstanden:

Ist es im Split möglich ein Ausschlusskriterium mitzugeben.
Zitat von Verena: " Aber nur bei den Pluszeichen die kein Fragezeichen davor haben."

In diesem Fall:
Wenn vor dem Zeichen + das Zeichen ? steht soll der Split keine Trennung vornehmen.

Ergebnis bei dir:

[BLA, ABC, , , TEST:?, 420 326 853 386, TEST]

gewolltes Ergebnis von Verena:


[BLA, ABC, , , TEST:?+420 326 853 386, TEST]

Gruß

Harald
 
Hallo!

... das nächste mal sollte ich die Beiträge mal zuende lesen...
Java:
/**
 * 
 */
package de.tutorials;

import java.util.Arrays;

/**
 * @author Thomas.Darimont
 * 
 */
public class StringSplitExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String str = "BLA+ABC+++TEST:?+420 326 853 386+TEST";
        //"[BLA, ABC, , , TEST:?+420 326 853 386, TEST]";
        System.out.println(Arrays.toString(str.split("(?<=[^\\?])\\+")));
    }
}

Ausgabe:
Code:
[BLA, ABC, , , TEST:?+420 326 853 386, TEST]

Gruß Tom
 
Zurück